You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CLion编译的exe运行后控制台提前关闭,std::cin.get()无效求助

解决直接运行.exe程序输入后立即关闭的问题

原因分析

直接运行编译后的.exe时,输入数字按下回车后,输入缓冲区里会残留一个换行符\n。如果只加一行std::cin.get(),它会直接读取这个残留的换行符,程序随即执行return 0并退出,所以达不到停留效果。而CLion内置控制台会在程序结束后自动保持窗口打开,VS也有类似机制,所以不会出现这个问题。

可行解决方案

  • 方案一:清空输入缓冲区后等待输入
    在return 0;前添加以下代码:

    // 忽略输入缓冲区中剩余的所有字符,直到遇到换行符
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    // 等待用户输入任意字符后退出
    std::cin.get();
    

    注意需要包含头文件<limits>才能使用std::numeric_limits。

  • 方案二:使用系统命令暂停窗口
    针对Windows平台,在return 0;前添加:

    system("pause");
    

    这个命令会直接在控制台显示“请按任意键继续...”,等待用户操作后才关闭窗口。缺点是依赖Windows系统,跨平台性差。

  • 方案三:修改CLion的编译运行配置
    如果想让直接生成的.exe运行时自动停留,可以在CLion的运行配置中,找到“Execution”选项卡,勾选“Run in external terminal”,这样编译后的程序会在外部控制台运行,且程序结束后不会立即关闭窗口(部分版本可能需要额外设置)。

内容的提问来源于stack exchange,提问作者XayTag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:32:02