Windows控制台运行C++代码后立即关闭问题求助
我之前在Windows 10用Visual Studio写C++控制台程序时,也碰到过这个超烦人的问题——刚运行完Hello World,控制台窗口嗖的一下就消失了,连输出都没看清!试了好几种延迟方法也没搞定,后来摸索出几个靠谱的解决办法,给你分享下:
方法一:修改Visual Studio的调试设置(不用改代码!)
这是最省心的方案,一次设置终身受用:
- 打开你的项目,点击顶部菜单栏的 项目 → 选择「你的项目名称属性」(比如项目叫HelloWorld,就是HelloWorld属性)
- 在弹出的属性窗口里,依次展开 配置属性 → 调试
- 在右侧找到 调试停止时自动关闭控制台,把前面的勾选框取消掉,点击「确定」。下次运行程序,执行完后窗口会保持打开,直到你手动关闭。
方法二:在代码末尾添加暂停逻辑
如果你之前加延迟没成功,大概率是写法不对,试试这几种可靠的实现:
方案A:用
system("pause")快速实现
在main函数的return语句前加上这行代码:system("pause");注意要确保代码里包含了
<cstdlib>头文件,不然可能编译报错。不过VS默认的控制台模板一般已经包含了必要头文件,保险起见可以在代码开头加上#include <cstdlib>。方案B:等待用户输入(更推荐的跨平台写法)
比起依赖系统命令的system("pause"),这种方法兼容性更好,也更灵活:
在main函数末尾添加:std::cout << "按任意键继续..."; std::cin.get();要是你的代码前面用过
std::cin做输入操作,输入缓冲区里会残留换行符,导致cin.get()直接读取到换行就结束,窗口还是会关闭。这时候需要先清空缓冲区,代码改成这样:#include <limits> // 要包含这个头文件用numeric_limits // ... 你的代码 ... std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cout << "按任意键继续..."; std::cin.get();方案C:用Windows API实现固定延迟
如果你只是想让窗口多停留几秒再关闭,可以用Windows的Sleep函数:#include <windows.h> // 必须包含这个头文件 // ... 你的代码 ... Sleep(3000); // 单位是毫秒,这里表示延迟3秒不过这个方法的缺点是到点就自动关闭,不管你有没有看完输出,灵活性不如前两种。
方法三:从命令行手动运行程序
找到项目编译生成的exe文件(一般在项目目录的Debug或Release文件夹里),打开命令提示符(CMD),把exe文件直接拖进CMD窗口,按回车运行。这样程序执行完后,命令行窗口会保持打开,你能清楚看到所有输出内容。
内容的提问来源于stack exchange,提问作者4everlearner

