我正在通过一本名为 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).
逐行浏览你的程序:
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 键应该会结束你的程序。
它完全按照你的指示去做。 它显示文本,然后程序退出。
当程序退出时,标准窗口行为是关闭窗口。
因此,很多人在这个开发阶段会在末尾添加
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;