C++ 系统(“暂停”)的替代方案?

C++ 系统(“暂停”)的替代方案?,c++,C++,我最近读到了关于系统(“暂停”)有多糟糕的消息。我尝试了cin.get(),但我不知道如何使用它来暂停程序。其他帖子说在语句后放置一个断点。但我不知道该怎么做。关于如何暂停我的节目有什么建议吗?请举个例子。假设您确实在Windows上工作,系统(“暂停”)最糟糕的一点是,它暴露了您对操作系统架构的根本误解。您不需要为系统(“暂停”)更换代码,因为代码是解决感知问题的错误位置 初学者喜欢将system(“PAUSE”)或甚至是类似std::cin.get()。然而,这种逻辑存在严重缺陷。当程序运行

我最近读到了关于系统(“暂停”)有多糟糕的消息。我尝试了
cin.get()
,但我不知道如何使用它来暂停程序。其他帖子说在语句后放置一个
断点。但我不知道该怎么做。关于如何暂停我的节目有什么建议吗?请举个例子。

假设您确实在Windows上工作,
系统(“暂停”)
最糟糕的一点是,它暴露了您对操作系统架构的根本误解。您不需要为
系统(“暂停”)
更换代码,因为代码是解决感知问题的错误位置

初学者喜欢将
system(“PAUSE”)
或甚至是类似
std::cin.get()。然而,这种逻辑存在严重缺陷。当程序运行时,您可能会看到并让您提出此问题的窗口不是程序本身的一部分,而是程序运行环境的一部分

然而,一个典型的控制台程序不能假设它在其中执行的环境的细节。相反,当通过
std::cout
std::cin
进行输入和输出时,您必须学会用更抽象的术语进行思考。谁说你的程序甚至对人类用户可见?您可以读取或写入文件;你可以使用管道;您可以向网络套接字发送文本。你不知道

#include <iostream>

int main()
{
    std::cout << "Hello world\n"; // writes to screen, file, network socket...
}
#包括
int main()
{
STD::CUT VisualStudio命令提示符,找到*.exe文件的目录并在那里运行(您最终也应该学会在没有VisualStudio帮助下启动编译器),因为这将使您对C++构建过程有更深入的理解。
  • 按CTRL+F5组合键
  • 在代码末尾放置断点。如果不知道如何操作,请阅读

  • 我更进一步了,cin.ignore,但用户只有在想继续时才能按enter键。 带有cin.ignore()的示例:

    #包括
    int main()
    {
    
    为什么
    cin.get()
    不适合你呢?
    cin.get()
    是一种暂停程序的愚蠢方式。如果输入缓冲区中还有字符,它就不会暂停。如果缓冲区中没有字符,它只会在您按enter键时恢复,同时您输入的任何字符都会显示在屏幕上,导致程序看起来非常不专业。这是错误的e如果你只是为自己制作一个程序。但是如果是这样的话,
    system(“pause”)
    也可以,如果它在你的系统上工作的话。其他帖子说在语句后放一个断点,但我不知道如何做。在任何版本的Visual Studio中,导航到
    main()中的最后一个语句
    然后按
    F9
    我们可以重复前面给出的所有建议,或者你可以在现在的地方阅读。如果程序是以
    program.exe>file.txt
    启动的,那么会发生什么呢?@ChristianHackl如果你意识到如果程序是由文本文件制作的,那么是的,我想也是一样的。你可能不得不这样做执行一些其他命令来在C++中编译文件。但是,不,如果程序写入文本文件。@基督教Healkl,那么,我真的不知道…XDIT将编写<代码>按Enter继续,< /代码>到文本文件,不在屏幕上显示任何东西,等待输入键按下。当然,这种行为完全被破坏了。这就是重点。不要假设屏幕I/O。
    #include <iostream>
    int main()
    {
        cout << "Press enter to continue!\n";
        cin.ignore();
        //do something
        return 0;
    }