开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜