我需要一个替代系统(“暂停”),因为我需要我的代码是干净的和跨平台的。 我是c ++的初学程序员,最近我读到了 BAD 系统(“PAUSE”)是怎样的。我试过cin.get()但是我不知道怎么用它来暂停一个程序,因为我之前说过,我是c ++的新手。其他帖子说在声明之后设置断点,但我不知道如何做到这一点。有关如何暂停我的程序的任何建议?如果你们能在程序中给我一个例子而不仅仅是函数,那真的会有所帮助。
编辑:这个问题与system("pause"); - Why is it wrong?不同,因为我需要一种快速而简单的方法来暂停我的程序,而且该帖子没有回答我的问题。
答案 0 :(得分:3)
假设您确实在使用Windows,那么system("PAUSE")
最糟糕的事情就是它背叛了对操作系统架构的根本误解。您不需要替换system("PAUSE")
代码,因为代码是解决感知问题的错误位置。
初学者喜欢在程序结束时放置system("PAUSE")
甚至是std::cin.get()
之类的便携式替代品,因为一旦程序结束,“窗口就会消失”。然而,这种逻辑存在严重缺陷。您可能在程序运行时看到的窗口以及让您提出此问题的窗口不是程序本身的一部分,而是程序运行环境的一部分。
但是,典型的控制台程序不得假设有关其执行环境的详细信息。在通过std::cout
和std::cin
进行输入和输出时,您必须学会用更抽象的术语思考。谁说您的程序甚至可供人类用户看到?您可以阅读或写入文件;你可以用管子;您可以将文本发送到网络套接字。你不知道。
#include <iostream>
int main()
{
std::cout << "Hello world\n"; // writes to screen, file, network socket...
}
打开图形窗口并在屏幕上显示文本输出不在您的程序范围内,但使用system("PAUSE")
完全假设一个用例并打破所有其他用例。
如果您使用像Visual Studio这样的IDE,并且因为在您有机会看到所有输出之前按F5最终会导致窗口消失这一事实感到恼火,这里有三个比操作程序本身更明智的选择:< / p>
cmd
或工具&gt;打开您自己的控制台窗口Visual Studio命令提示符,找到该* .exe文件的目录并在那里运行(您最终还应该学习在没有Visual Studio帮助的情况下启动编译器,因为这样可以让您更深入地了解C ++构建过程)。答案 1 :(得分:0)
我离cin.ignore更近了一步,但是如果他/她想要继续,用户只能按回车键。 cin.ignore()示例:
#include <iostream>
int main()
{
cout << "Press enter to continue!\n";
cin.ignore();
//do something
return 0;
}
按Enter键时,它会前进并执行您想要的任何操作。