VS Code C++ 如何通过文件而非终端实现输入输出重定向
VS Code C++ 基于tasks.json实现输入输出文件重定向操作方法
1. 提前准备测试文件
- 将所有测试输入内容按程序要求的格式存入文本文件,命名为
input.txt,建议放在当前C++项目的根目录或和源码文件同目录 - 输出结果会自动生成到
output.txt,无需提前创建该文件
2. 配置tasks.json
2.1 打开tasks.json
如果项目中还没有该文件,按以下步骤生成:
- 打开任意C++源码文件
- 按下
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)呼出命令面板 - 输入
Tasks: Configure Default Build Task,选择对应C编译器(g/clang/cl等),即可自动生成.vscode/tasks.json文件
2.2 修改配置内容
将原有tasks配置替换为以下复合任务配置,核心是在编译完成后执行带重定向符的运行命令:
{ "version": "2.0.0", "tasks": [ // 编译任务 { "type": "cppbuild", "label": "C/C++: 编译C++文件", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build" }, // 带重定向的运行任务 { "label": "编译并带文件重定向运行", "type": "shell", "command": "./${fileBasenameNoExtension} < input.txt > output.txt", // Windows系统替换为下面的命令 // "command": "${fileBasenameNoExtension}.exe < input.txt > output.txt", "options": { "cwd": "${fileDirname}" }, "group": { "kind": "build", "isDefault": true }, // 运行前先执行编译任务 "dependsOn": "C/C++: 编译C++文件" } ] }
核心参数说明:
< input.txt:将标准输入流重定向到input.txt,程序中cin/getline会直接读取该文件内容,不需要手动输入> output.txt:将标准输出流重定向到output.txt,程序中cout的内容会直接写入该文件,不会打印到终端- 如果需要把错误输出(
cerr)也写入文件,可以修改运行命令为./${fileBasenameNoExtension} < input.txt > output.txt 2>&1
3. 执行测试
打开对应的C++源码文件,按下Ctrl+Shift+B(Windows/Linux)或Cmd+Shift+B(macOS)即可自动执行编译、读文件输入、写结果到输出文件的全流程,运行完成后直接打开output.txt查看所有运行结果即可。
注意事项
- 请确保
input.txt的存放路径和cwd参数配置的路径一致,示例中cwd为${fileDirname}(当前源码文件所在目录),因此input.txt需要和源码放在同一目录下 - 如果测试用例有固定格式要求,请保证
input.txt的内容格式和手动输入的格式完全一致,否则会出现读取错误 - 多次运行会直接覆盖
output.txt的原有内容,如果需要保留历史运行结果,可以将重定向符改为>> output.txt实现追加写入
内容的提问来源于stack exchange,提问作者Naval Kishore
相关产品推荐
相关产品推荐

