简单的"Hello World"式程序在执行开始后很快关闭

Simple "Hello World" style program closes extremely soon after execution starts

本文关键字:开始 很快 执行 程序 Hello World 简单      更新时间:2023-10-16

我正在通过一本名为 c++ a初学者指南第二版的书学习c++。当我运行可执行文件时,它显示它半秒,然后关闭它。

我在Windows 8.1上使用Microsoft Visual Studio Express 2013 for Windows Desktop。

代码如下:

*/
#include <iostream>
using namespace std;
int main()
{
    cout << "C++ is power programming.";
    return 0;
}

我只能在运行时看到文本,因为控制台关闭得太快了。

为什么程序关闭得这么快,我如何阻止这种情况发生?

'Project1.exe' (Win32): Loaded 'C:UsersBenjaminDocumentsVisual Studio 2013ProjectsProject1DebugProject1.exe'. Symbols loaded.
'Project1.exe' (Win32): Loaded 'C:WindowsSysWOW64ntdll.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:WindowsSysWOW64kernel32.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:WindowsSysWOW64KernelBase.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:WindowsSysWOW64msvcp120d.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:WindowsSysWOW64msvcr120d.dll'. Cannot find or open the PDB file.
The program '[6908] Project1.exe' has exited with code 0 (0x0).

逐行浏览程序:

int main()
{

这定义了程序的入口点,它返回的int将返回到启动程序的任何地方。

    std::cout << "C++ is power programming."; // or just cout when you're using namespace std

将字符串字面值C++ is power programming.打印到控制台。

    return 0;
}

向调用者返回0值通常用于表示成功(程序成功执行)。然而,如果你想,你可以返回其他的东西(例如,如果你的程序计算了一些应该被调用者使用的值)。

所以,简而言之,你告诉你的程序打印一条消息到控制台,然后返回,这正是它所做的。如果您想要阻止程序在完成后立即关闭,您可以在return 0语句之前执行如下操作:

std::cin.get(); // or just cin.get() when using namespace std
return 0;

std::cin.get()所做的是等待用户输入;当你准备好了,按回车键应该会结束你的程序。

它完全按照你的要求去做。它显示文本,然后程序退出。

程序退出时,标准的窗口行为是关闭窗口。

因此,许多人在这个开发阶段在最后添加一个sleep(5),或者简单地从用户那里读取一个字符。

在首选项中也有禁用此行为的设置。

有一个很好的解决方案:http://www.cplusplus.com/forum/articles/7312/,但也许最简单的解决方案之一是创建一个这样的函数:

void PressEnterToContinue()
{
     std::cout << "Press ENTER to continue... " << flush;
     std::cin.ignore( std::numeric_limits <std::streamsize> ::max(), 'n' );
}

并在退出main之前调用它

您应该请求用户在main末尾输入(在return之前)以保持屏幕上的窗口,直到按下字符/键,如下所示:

char c;
scanf("press a key: %c", &c);

char c = getchar();

char c;
std::cin >> c;