C ++。我运行它时编程自我杀伤

时间:2012-09-01 21:27:13

标签: c++ runtime-error

  

可能重复:
  How to stop C++ console application from exiting immediately?

我是C ++的新手。在教程之后,我的程序在完成执行简单命令(如cout ans stuff)后自我实现。我发现了避免这种情况的get.cin()函数。但是,无论何时我使用'cin'命令插入变量,程序只有在收到输入并执行工作后才会自我修复。有没有办法避免这种情况?非常感谢!

5 个答案:

答案 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