2010-12-03 60 views
20

在C#中,您可以使控制台等待输入字符(这对于在程序退出前能够看到控制台的最后输出很有用)。作为C++的初学者,我不确定什么是等价的。有一个吗?控制台在C++中暂停?

+0

Windows还是Linux? – 2010-12-03 08:44:08

+2

Duplicate:http://stackoverflow.com/questions/1173208/what-is-the-best-practice-for-combating-the-console-closing-issue – 2010-12-03 08:47:04

+0

@Stefan:windows。 – RCIX 2010-12-03 08:47:55

回答

3

标准中没有什么东西,也没有什么跨平台的。通常的方法是等待< Enter>被按下,然后放弃结果。

29

最简单的方法就是:

std::cin.get(); 

可以打印类似“按任意键继续......”在那之前。有人会告诉你关于

system("pause"); 

但是不要使用它。它不是便携式的。

5
#include <stdio.h> 
// ... 
getchar(); 

该函数等待一个按键并返回其整数值。

例如,我有不一样System("pause")的函数,但它不要求“pause.exe”(这是一个潜在的安全整体,顺便说一句):

void pause() 
{ 
    std::cout << std::endl << "Press any key to continue..."; 
    getchar(); 
} 
0

不正确的解决方案将是使用system("pause"),因为这会造成安全漏洞(目录中的恶意pause.exe!)并且不是跨平台的(暂停只存在于Windows/DOS上)。

有一个简单的解决方案:

void myPause() { 
    printf("Press any key to continue . . ."); 
    getchar(); 
} 

这使用getchar(),这是符合POSIX标准(见this)。 您可以使用此功能是这样的:

int main() { 
    ... 
    myPause(); 
} 

这有效地防止控制台从闪动,然后退出。