Console pause in C++?
In C# you can cause the console to wait for a character to be input (whi开发者_运维问答ch is useful for being able to see the last outputs of a console before the program exits). As a beginner in C++, i'm not sure what the equivalent is. Is there one?
The simplest way is simply:
std::cin.get();
You can print something like "Press any key to continue..." before that. Some people will tell you about
system("pause");
But don't use it. It's not portable.
#include <stdio.h>
// ...
getchar();
The function waits for a single keypress and returns its (integer) value.
For example, I have a function that does the same as System("pause")
, but without requiring that "pause.exe" (which is a potential security whole, btw):
void pause()
{
std::cout << std::endl << "Press any key to continue...";
getchar();
}
There is nothing in the standard, and nothing cross-platform. The usual method is to wait for <Enter> to be pressed, then discard the result.
The incorrect solution would be to use system("pause")
as this creates security holes (malicious pause.exe in directory!) and is not cross-platform (pause only exists on Windows/DOS).
There is a simpler solution:
void myPause() {
printf("Press any key to continue . . .");
getchar();
}
This uses getchar()
, which is POSIX compliant (see this).
You can use this function like this:
int main() {
...
myPause();
}
This effectively prevents the console from flashing and then exiting.
精彩评论