注:原創不易,轉載請務必註明原做者和出處,感謝支持!算法
重定向在代碼調試時使用有多頻繁,相信常常刷算法題的同窗必定深有體會。本文總結了在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; }