C++当我运行程序时,它会自拍

C++. Program selfkills when I run it

本文关键字:运行 程序 C++      更新时间:2023-10-16

可能重复:
如何阻止C++控制台应用程序立即退出?

我是C++的新手。在教程之后,我的程序在执行完简单命令(比如cout-ans之类的)后就自杀了。我发现了get.cin()函数可以避免这种情况。然而,每当我使用"cin"命令插入变量时,程序都会在收到输入并执行工作后自行终止。有办法避免这种情况吗?非常感谢!

当程序接收到输入时,即使您使用std::cin.get(),它也会退出,因为每当cin读取输入时,都有可能留下一些垃圾;当你打电话给std::cin.get()时,你会收到那些垃圾。

您要做的是清除cin中任何不需要的数据,这样std::cin.get()就没有什么可读取的内容,需要等待新的输入。

...
std::cin.clear();
std::cin.get();
return 0; 

程序不会"自杀"。当它完成了它应该做的所有事情时(即,当您从main返回时),它只是退出

这取决于你设置你的工作环境,这样你就可以看到程序的输出。例如,如果您在Windows中,您可以打开自己的命令行(运行cmd)并从中运行程序;或者指示IDE在程序退出后不要关闭终端窗口。

你的程序在执行后不会自杀,它只是结束它。

简单示例:

#include <iostream>
int main( int argc, const char* argv[] )
{
    std::cout << "Hello, World" << std::endl;
    return 0; // End of execution
}

在这个例子中,一个小窗口打开然后很快关闭,因为代码的逻辑是这样说的,然而在下一个例子中:

#include <iostream>
int main( int argc, const char* argv[])
{
     std::cout <<"Hello, World!" << std::endl;
     std::cin.get();
     return 0;
}

您的应用程序仍将显示在屏幕上,直到您按下回车键,然后它将退出。

如果您使用Windows操作系统,请考虑下一个示例:

#include <iostream>
int main( int argc, const char* argv[])
{
     std::cout << "Hello, World!" << std::endl;
     system("PAUSE");
     return 0;
}

请注意,system("PAUSE")仅在Windows中运行,不会在其他操作系统上运行。

这里还有一件值得一提的事,有很多方法可以使用这些之外的其他方法,但我写了最常见的方法。

在一些窗口系统中,程序执行时会创建控制台窗口。程序结束后,此控制台窗口将消失。

我总是向新手推荐"暂停"模式:

cout << "Paused. Press ENTER to continue.n");
cin.ignore(10000, 'n'); // Ignore until 100000 characters are entered or a newline is entered.

有时,我会把它变成一个函数:

void Pause(void)
{
    cout << "Paused. Press ENTER to continue.n");
    cin.ignore(10000, 'n'); // Ignore until 100000 characters are entered or a newline is entered.
}

希望这有帮助,

std::cin.get()运行良好,使用非常简单,但它希望用户按回车键。我以前用ESC结束我的程序,所以它对我不起作用,所以我用这个

#ifdef _WIN32
std::system( "pause" );
#else
std::system( "read -n1 -r -p "Press any key to continue..."" );
#endif

它会打印"按任意键继续…",并在按任意键的情况下继续执行,这样我就可以使用我可爱的ESC