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

C++程序未接收vector输入直接终止 编译运行报错问题排查

问题说明

需要实现的功能为:读取输入的整数n,再依次读取n个整数存入vector容器,实现代码如下:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    vector<int> input(n);
    for (int i = 0; i < n; i++)
    {
        cin >> input[i];
    }
    return 0;
}

代码本身逻辑没有问题,在其他环境可以正常运行,但本地运行出现两个异常:

  • 运行程序时,没有等待接收输入就直接终止
  • Windows终端下编译直接报错,对应有编译报错、运行错误、程序执行后终端界面三张参考截图
    测试用输入示例:
5
5 3 1 5 2
问题排查与解决

按以下顺序逐一排查即可解决:

  1. 先修复编译环境问题
    打开终端执行g++ -v,如果提示找不到命令,说明MinGW的bin目录没有加入系统环境变量,先配置好环境变量,重启终端后再尝试编译。
    如果能正常输出版本信息,检查你的代码文件存放路径、文件名是否包含中文、空格或者特殊字符,Windows下的g对非英文路径兼容很差,把文件移到纯英文路径下(比如D:\codes\test.cpp),再用标准命令编译:g++ test.cpp -o test.exe -std=c++11,显式指定C标准,避免旧编译器兼容问题。
  2. 修复程序不等待输入直接退出的问题
    这个问题90%以上的诱因是编译失败:编译报错时不会生成新的可执行文件,你运行的是之前残留的损坏exe,自然会出现异常退出、不接收输入的情况。
    确认编译成功生成新的test.exe后,不要直接双击exe运行,在终端中切换到exe所在目录,输入test.exe手动启动程序,再输入测试用例即可。
    如果是控制台窗口一闪而过误以为程序没接收输入,在代码的return 0;前加两行代码强制程序停留:
    cin.ignore();
    cin.get();
    
  3. 特殊情况排查
    检查杀毒软件是否拦截了编译生成的exe,部分杀毒软件会误杀未签名的C++小程序,把代码目录加入白名单即可。
    如果用的是几年前的老旧MinGW版本,直接换成winlibs版的MinGW-w64,能避免很多莫名其妙的兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:42:22