简单的“Hello World”风格程序在执行开始后很快就会关闭

问题描述 投票:0回答:3

我正在通过一本名为 C++ 初学者指南第二版 的书学习 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:\Users\Benjamin\Documents\Visual Studio 2013\Projects\Project1\Debug\Project1.exe'. Symbols loaded.
'Project1.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Cannot find or open the PDB file.
'Project1.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Cannot find or open the PDB file.
The program '[6908] Project1.exe' has exited with code 0 (0x0).
c++ visual-studio-2013
3个回答
5
投票

逐行浏览你的程序:

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()
所做的就是等待用户输入;当你准备好时,按 Enter 键应该会结束你的程序。


3
投票

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

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

因此,很多人在这个开发阶段会在末尾添加

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


1
投票

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

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

char c = getchar();

char c;
std::cin >> c;
© www.soinside.com 2019 - 2024. All rights reserved.