cin/printf 重定向
OJ 重定向模板
//OJ 重定向模板
#include
#include
#include
#include
using namespace std;
#define ioRedirect
int main(){
#ifdef ioRedirect
//两行语句只能启用一行 且 iostream与stdio.h最好不要同时包含!
ifstream mycin("d:\\in.txt"); cin.rdbuf(mycin.rdbuf());
//freopen("d:\\in.txt", "r", stdin);
#endif
return 0;
}
IO重定向
//输入输出重定向cin、cout
//用于本地调试,哈哈
#include
#include
using namespace std;
int main()
{
//way-1
ofstream out("out.txt");//in.txt为输入测试数据,该文档存放于与代码同文件夹内
ifstream in("in.txt");
cin.rdbuf(in.rdbuf());
cout.rdbuf(out.rdbuf());
return 0;
}
//traditional c style ///
//有很多比赛都是cin超时。哎。。。还得用scanf
#include
int main( )
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
return 0;
}
重定向后如何恢复到 控制台IO ?
答:需在重定向前做好备份。
fstream inFile,outFile;
streambuf *stdcin,*stdcout;
stdcin=cin.rdbuf();
stdcout=cout.rdbuf(); //提前备份
inFile.open("d:\\contract_in.txt",ios::in);
outFile.open("d:\\contract_out.txt",ios::out|ios::trunc);//文件流关联到文件
cin.rdbuf(inFile.rdbuf());
cout.rdbuf(outFile.rdbuf());//重定向
inFile.close();
outFile.close();//文件关闭
cin.rdbuf(stdcin);
cout.rdbuf(stdcout);//恢复到标准输出