简单的"Hello World"式程序在执行开始后很快关闭
Simple "Hello World" style program closes extremely soon after execution starts
我正在通过一本名为 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;
- 当回溯以零开始时,如何调试崩溃
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何从头开始创建 avi 文件?
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 自一周开始以来的秒数?
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- GStreamer在开始任何播放之前进行搜索
- 使 std::fstream 写入文件末尾,但从头开始读取
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 哪个C++规范开始支持 std::vector
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 如何在调试中通过传递引用开始
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象
- 从特定键开始遍历地图
- 列表的有效性在插入后开始迭代器
- 尝试从头开始实现Leetcode的FizzBuzz多线程问题。收到"libc++abi.dylib: terminating"错误
- 试图修复一个错误,该错误不会让我开始编程其余部分
- 甚至在开始执行之前出现分段错误
- 简单的"Hello World"式程序在执行开始后很快关闭