猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何将CIN和cout重定向到文件?
如何将CIN和cout重定向到文件?
我怎么才能重定向
cin
到
in.txt
和
cout
到
out.txt
?
qq_笑_17
浏览 776
回答 3
3回答
温温酱
只管写#include <cstdio>#include <iostream>using namespace std;int main(){ freopen("output.txt","w",stdout); cout<<"write in file"; return 0;}
0
0
0
ibeautiful
下面是一个用于隐藏CIN/cout的简短代码片段,用于编程竞赛:#include <bits/stdc++.h>using namespace std;int main() { ifstream cin("input.txt"); ofstream cout("output.txt"); int a, b; cin >> a >> b; cout << a + b << endl;}这提供了额外的好处,即普通的fStreams比同步的Stdio流更快。但这只适用于单个函数的范围。全局CIN/Cout重定向可以写为:#include <bits/stdc++.h>using namespace std;void func() { int a, b; std::cin >> a >> b; std::cout << a + b << endl;}int main() { ifstream cin("input.txt"); ofstream cout("output.txt"); // optional performance optimizations ios_base::sync_with_stdio(false); std::cin.tie(0); std::cin.rdbuf(cin.rdbuf()); std::cout.rdbuf(cout.rdbuf()); func();}请注意ios_base::sync_with_stdio还重置std::cin.rdbuf..所以命令很重要。另见IOS_base的意义:sync_with_stdio(False);cin.tie(NULL);STDIO流对于单个文件的范围也很容易隐藏,这对于有竞争力的编程非常有用:#include <bits/stdc++.h>using std::endl;std::ifstream cin("input.txt");std::ofstream cout("output.txt");int a, b;void read() { cin >> a >> b;}void write() { cout << a + b << endl;}int main() { read(); write();}但在这种情况下我们必须选择std逐个声明并避免using namespace std;因为它会产生歧义错误:error: reference to 'cin' is ambiguous cin >> a >> b; ^note: candidates are: std::ifstream cin ifstream cin("input.txt"); ^ In file test.cpp std::istream std::cin extern istream cin; /// Linked to standard input ^另见如何正确使用C+中的命名空间?, 为什么“使用命名空间STD”被认为是不好的做法?和如何解决C+命名空间与全局函数之间的名称冲突?
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续