注:原创不易,转载请务必注明原做者和出处,感谢支持!算法
重定向在代码调试时使用有多频繁,相信常常刷算法题的同窗必定深有体会。本文总结了在C和C++中进行输入输出重定向的简便方法。函数
C语言标准库中提供了freopen()
函数来进行输入输出的重定向。
函数原型:spa
#include <stdio.h> FILE *freopen(const char *filename, const char *mode, FILE *stream);
功能:指针
参数:调试
返回值:若是重定向成功,则返回stream;不然,返回nullcode
实例:ci
/* 将input.txt重定向到标准输入 */ freopen("input.txt", "r", stdin); /* 将标准输出重定向到output.txt */ freopen("output.txt", "w", stdout);
C++提供了rdbuf()
函数来进行重定向,与上述C语言片断功能同样的C++代码以下所示:字符串
#include <iostream> #include <fstream> using namespace std; int main(int argc, char ** argv) { // 备份cin和cout的默认buf streambuf *cin_backup, *cout_backup; cin_backup = cin.rdbuf(); cout_backup = cout.rdbuf(); // 打开要参与重定向的文件 fstream in, out; in.open("in.txt", ios::in); out.open("out.txt", ios::out); if (in.fail() || out.fail()) return -1; // 将in.txt内容重定向到cin // 将cout重定向到out.txt cin.rdbuf(in.rdbuf()); cout.rdbuf(out.rdbuf()); int n; cin >> n; cout << n << endl; cin.rdbuf(cin_backup); cout.rdbuf(cout_backup); return 0; }