可能重复:
How to stop C++ console application from exiting immediately?
我是C ++的新手。在教程之后,我的程序在完成执行简单命令(如cout ans stuff)后自我实现。我发现了避免这种情况的get.cin()函数。但是,无论何时我使用'cin'命令插入变量,程序只有在收到输入并执行工作后才会自我修复。有没有办法避免这种情况?非常感谢!
答案 0 :(得分:1)
当你的程序收到输入时它退出的原因,即使你使用std::cin.get()
是因为只要cin
读取输入,就有可能留下一些垃圾;当你打电话给std::cin.get()
时,你会得到那个垃圾。
您需要做的是清除cin
任何不需要的数据,这样std::cin.get()
无需阅读,需要等待新输入。
...
std::cin.clear();
std::cin.get();
return 0;
答案 1 :(得分:1)
程序不会“自杀”。当它完成了它应该做的所有事情时(即当你从main
返回时)退出。
您可以设置工作环境,以便查看程序的输出。例如,如果您在Windows中,则可以打开自己的命令行(运行cmd
)并从那里运行程序;或者指示IDE在程序退出后不关闭终端窗口。
答案 2 :(得分: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中,不会在其他操作系统上运行。
还有一件值得一提的事情, 有很多方法可以使用其他 ,但我写了最常见的方法。
答案 3 :(得分: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.
}
希望这有帮助,
答案 4 :(得分:0)
std::cin.get()
运行良好,其使用非常简单,但希望用户按返回。
我曾经使用ESC
结束我的程序,所以它对我不起作用,所以我用这个
#ifdef _WIN32
std::system( "pause" );
#else
std::system( "read -n1 -r -p \"Press any key to continue...\"" );
#endif
它将打印“按任意键继续......”并按任意键继续执行,这样我就可以使用我可爱的ESC