可能重复:
如何阻止 C++ 控制台应用程序立即退出?
我是 C++ 的新手。按照教程,我的程序在执行完简单的命令(如 cout ans 的东西)后会自我杀死。我发现了避免这种情况的 get.cin() 函数。但是,每当我使用“cin”命令插入变量时,程序在接收到输入并执行工作后就会自我终止。有没有办法避免这种情况?多谢!
可能重复:
如何阻止 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 中,您可以打开自己的命令行 (run 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