用streambuf先备份原来的cin或者cout的rdbuf,然后用ifstream或ofstream的rdbuf绑定到cin或者cout的rdbuf。使用完后记得用当初streambuf备份的cin或者cout的默认rdbuf重新绑定到cin或者cout的rdbuf上,恢复默认状态。
#include <iostream> #include <algorithm> // has copy #include <iterator> #include <fstream> #include <string> using namespace std; int main() { string str; streambuf * backup; ifstream fin; fin.open("input.txt"); backup=cin.rdbuf(); cin.rdbuf(fin.rdbuf()); //put your code here int a,b,c; cin>>a>>b>>c; if (a<3&&b<5&&c<7) { int i=0; for (i=10;i<101;i++) { if ((i%3)==a&&(i%5)==b&&(i%7)==c) { cout<<i<<endl; break; } } if (i==101) { cout<<"No answer"<<endl; } } else { cout<<"No answer"<<endl; } //recover rdbuf cin.rdbuf(backup); fin.close(); return 0; }