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

VS Code编译C++时如何自动从input.txt读取输入到终端(Ubuntu+Code Runner)

C++ 程序自动读取本地输入文件的实现方案(Ubuntu VS Code + Code Runner 环境)

方案1:修改Code Runner配置(无需修改代码,全局生效)

  • 打开VS Code设置,搜索code-runner.executorMap,选择在settings.json中编辑
  • 找到配置项中cpp对应的执行命令,默认值为:
    "cpp": "g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    
  • 将命令修改为带输入重定向的版本:
    // 仅自动读取input.txt作为输入,结果输出到终端
    "cpp": "g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt < $dirinput.txt"
    // 如果需要同时把输出保存到output.txt,用下面的版本
    // "cpp": "g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt < $dirinput.txt > $diroutput.txt"
    
  • 配置完成后,在当前代码所在文件夹新建input.txt,写入测试用例,运行Code Runner就会自动读取文件内容作为输入,不需要手动输入。

方案2:代码内增加条件编译(灵活切换,不影响OJ提交)

不需要修改IDE配置,仅在代码头部加入少量宏定义即可:

#include <iostream>
using namespace std;

// 仅本地运行时生效,自动重定向输入输出
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
// 可选:自动把输出存到output.txt
// freopen("output.txt", "w", stdout);
#endif

// 原来的代码不需要做任何修改
int main() {
    int M,N;
    cin>>M>>N;
    int i,a[M],b[N];
    for(i=0;i<M;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<N;i++)
    {
        cin>>b[i];
    }
    Solution ob;
    cout<<ob.countPairs(a, b, M, N)<<endl;
    return 0;
}
  • 本地编译运行时默认没有定义ONLINE_JUDGE宏,会自动将标准输入重定向到同目录的input.txt,原有cin逻辑完全不需要改动
  • 提交到在线判题平台时,平台一般会默认定义ONLINE_JUDGE宏,这部分重定向代码不会生效,不影响正常提交使用。

注意事项

  • 两种方案都默认input.txt和当前运行的C++代码在同一个文件夹下,如果存放在其他路径,需要替换成文件的绝对路径
  • 如果使用方案1,需要临时手动输入测试用例时,直接在终端手动执行编译后的二进制文件,不加< input.txt参数即可

内容的提问来源于stack exchange,提问作者Senthil Vikram Vodapalli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:36:03