在C#中,您可以使控制台等待输入一个字符(这对于能够在程序退出之前查看控制台的最后输出非常有用)。作为C++初学者,我不确定相应的方法是什么。是否有类似的方法呢?
std::cin.get();
你可以在此之前打印一些类似于“按任意键继续...”的内容。有些人会告诉你关于
system("pause");
但不要使用它。它不具备可移植性。
cin.get()
应该只读取一个字符,但你的终端可能进行行缓冲,所以在调用get()
之前需要按下回车键。 - Alex Jasmin#include <stdio.h>
// ...
getchar();
这个函数等待单个按键并返回其整数值。
例如,我有一个函数,它可以像System("pause")
一样运行,但不需要"pause.exe"(顺便说一下,这是一个潜在的安全漏洞):
void pause()
{
std::cout << std::endl << "Press any key to continue...";
getchar();
}
pause.exe
пјҢpause
жң¬иә«жҳҜWindows shellдёӯзҡ„еҶ…зҪ®е‘Ҫд»ӨгҖӮ - Greg Hewgillsystem("notepad")
启动记事本,因此这个命令绝对可以启动其他可执行文件。 - Mephane标准中没有相关内容,也没有跨平台的解决方法。通常的做法是等待用户按下<Enter>键,然后丢弃输入结果。
不正确的解决方案是使用 system("pause")
,因为它会创建安全漏洞(目录中的恶意 pause.exe!)并且不跨平台(pause 仅存在于 Windows/DOS 上)。
有一个更简单的解决方案:
void myPause() {
printf("Press any key to continue . . .");
getchar();
}
这里使用的是 POSIX 兼容的 getchar()
函数(参见 this)。
你可以像这样使用该函数:
int main() {
...
myPause();
}