Visual Studio环境下C++算法竞赛如何实现输入输出分离
C++ 算法竞赛输入输出分离实现方案
以下提供两种适配竞赛场景的实现方案,你可以根据自己的使用习惯选择:
方案1:文件读写分离(竞赛场景最常用)
这种方式不需要改原有算法逻辑,提交到OJ时仅需要注释2行代码即可:
- 在代码同级目录新建
in.txt,提前写入所有测试用例输入 - 代码开头加入重定向语句,运行后输出会自动写入同目录的
out.txt - 直接打开两个文件就能分别查看输入、输出内容,完全隔离互不干扰
示例代码:
#include <iostream> using namespace std; int main() { // 本地调试时开启,提交到OJ前注释掉下方两行即可 freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); // 原有算法代码不需要任何修改,cin/cout/scanf/printf都正常使用 int a, b; cin >> a >> b; cout << a + b << endl; return 0; }
方案2:控制台显示分离
如果需要在控制台内直接区分输入输出,可以先读完所有输入内容存储到变量中,全部输入完成后再统一打印所有输出,这样控制台前半段都是输入内容,后半段都是输出内容,不会出现穿插混杂的情况。
示例代码:
#include <iostream> #include <vector> using namespace std; int main() { // 先读取所有输入,存到对应变量 int n; cin >> n; vector<int> arr(n); for (int i = 0; i < n; i++) { cin >> arr[i]; } // 所有输入读取完成后,再统一输出结果 cout << "===== 输出结果 =====" << endl; for (int num : arr) { cout << num * 2 << endl; } return 0; }
- 如果你需要边输入边输出还能区分,可以给输出加统一前缀,比如所有输出前都加
[输出]标记,和输入内容做区分 - 若使用C++文件流实现读写,逻辑和重定向方式一致,仅写法不同,竞赛场景更推荐
freopen写法,代码更简洁
内容的提问来源于stack exchange,提问作者Ahmed Magdy
相关产品推荐
相关产品推荐

