C++ 控制台暂停在C++;?

C++ 控制台暂停在C++;?,c++,windows,console,C++,Windows,Console,在C#中,您可以使控制台等待输入字符(这对于能够在程序退出之前查看控制台的最后输出非常有用)。作为C++初学者,我不确定等价的是什么。有吗?标准中没有任何内容,也没有跨平台的内容。通常的方法是等待按下,然后放弃结果。最简单的方法是: std::cin.get(); 在此之前,您可以打印“按任意键继续…”之类的内容。有些人会告诉你 system("pause"); 但是不要用它。它不可移植。不正确的解决方案是使用系统(“暂停”),因为这会造成安全漏洞(目录中的恶意pause.exe!),并且不

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

标准中没有任何内容,也没有跨平台的内容。通常的方法是等待按下,然后放弃结果。

最简单的方法是:

std::cin.get();
在此之前,您可以打印“按任意键继续…”之类的内容。有些人会告诉你

system("pause");

但是不要用它。它不可移植。

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

#include <stdio.h>
// ...
getchar();
有一个更简单的解决方案:

void myPause() {
    printf("Press any key to continue . . .");
    getchar();
}
这将使用符合POSIX的
getchar()
(请参阅)。 您可以这样使用此功能:

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

这有效地防止了控制台闪烁然后退出。

Duplicate:如果这是Windows,则它是@Christian链接到的控制台的副本。投票关闭。请注意,虽然
cin.get()
应该读取一个字符,但您的终端可能进行了行缓冲,因此您必须在调用
get()
返回之前按enter键。这两个示例的行为不一样,cin.get()等待enter键,系统(“暂停”)用户按任意键后立即返回。没有
pause.exe
pause
本身是Windows shell中的一个内置命令。我的印象是,命令pause导致运行整个过程,基本上就是程序“pause”。例如,
系统(“记事本”)
(在windows上)启动记事本,因此此命令肯定可以启动其他可执行文件;在返回之前等待输入键,C++标准库被纳入ANSI/C++ ISO语言标准,包含<代码> STD::CIN <代码>类<代码> ISReAM/<代码>。这是跨平台的,而不是“什么都没有”。
int main() {
    ...
    myPause();
}