1

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

我是 C++ 的新手。按照教程,我的程序在执行完简单的命令(如 cout ans 的东西)后会自我杀死。我发现了避免这种情况的 get.cin() 函数。但是,每当我使用“cin”命令插入变量时,程序在接收到输入并执行工作后就会自我终止。有没有办法避免这种情况?多谢!

4

5 回答 5

1

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

您需要做的是清除cin任何不需要的数据,例如std::cin.get()没有可读取的内容并且需要等待新的输入。

...
std::cin.clear();
std::cin.get();
return 0; 
于 2012-09-01T21:32:05.750 回答
1

程序不会“自杀”。它只是在完成它应该做的所有事情后退出main(即,当你从 回来时)。

您可以自行设置工作环境,以便查看程序的输出。例如,如果您在 Windows 中,您可以打开自己的命令行 (run cmd) 并从那里运行您的程序;或指示您的 IDE 在程序退出后不要关闭终端窗口。

于 2012-09-01T21:33:07.650 回答
1

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

简单的例子:

#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,不会在其他操作系统上运行。

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

于 2012-09-01T22:12:03.780 回答
0

在某些窗口系统中,当您的程序执行时会创建一个控制台窗口。当您的程序完成时,此控制台窗口会消失。

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

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.
}

希望这可以帮助,

于 2012-09-01T21:54:15.740 回答
0

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

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

它会打印“按任意键继续...”并按任意键继续执行,这样我就可以使用我可爱的ESC

于 2012-09-01T22:06:09.860 回答