我一直在互联网上寻找这个太久了。有没有办法可以按任意键,它会立即停止暂停并继续执行代码,但它不会显示你在屏幕上按下的键(如系统(“暂停”))?
人们说cin.get()
和类似的东西,但是,如果我使用它,我必须按任意键并且它会显示在屏幕上,你必须在此之后按Enter键。
答案 0 :(得分:4)
由于您引用system("pause")
我猜您正在使用Windows,因此您可以使用_getch
等待任何密钥。
答案 1 :(得分:2)
Joachim Pileborg已将_getch
提及为特定于Windows的技术解决方案。
然而,这是寻找问题的解决方案......因为确实没有问题。
要查看控制台程序的最后一个输出,您可以使用以下任何方法:
从命令行运行程序,例如Windows标准[cmd.exe]命令解释器的实例。
从IDE运行程序,使其在结束时停止。例如。在Visual Studio中只需使用 [Ctrl F5] 。
在调试器中运行程序,在}
的结束main
上使用断点。例如。在Visual Studio中,添加该断点并通过按键[F5]运行。
特别是当您尝试第一个项目符号点时,您会注意到在程序结束时使用_getch
或system( "pause" )
或类似内容,没有任何优势并且可能非常烦人!
答案 2 :(得分:1)
我不了解Windows(显然_getch()
是可行的方式),但在UNIX上,您可以将标准输入流(文件描述符0
)设置为非规范模式使用tcgetattr()
和tcsetattr()
立即获取密钥。要禁止按键显示,您还需要禁用回显:
termios old_tio, new_tio;
int rc = tcgetattr(0,&old_tio);
new_tio=old_tio;
new_tio.c_lflag &=(~ICANON & ~ECHO);
rc = tcsetattr(0,TCSANOW,&new_tio);
std::string value;
if (std::cin >> value) {
std::cout << "value='" << value << "'\n";
}
rc = tcsetattr(0,TCSANOW,&old_tio);
此代码
ICANON
和ECHO
标记遗憾的是,没有便携式处理这些设置的方法,即您需要采用特定于平台的用途。我认为 tcgetattr()
和tcsetattr()
的使用适用于POSIX系统。