首页 > 代码库 > C++之重定向

C++之重定向

#include "stdafx.h"#include <iostream>#include <fstream>int main(int argc, char* argv[]){    using namespace std;    cout << "Hello, Let‘s begin a test of cout to file." << endl;    // 保存cout流缓冲区指针     streambuf* coutBuf = cout.rdbuf();    ofstream of("out.txt");    // 获取文件out.txt流缓冲区指针     streambuf* fileBuf = of.rdbuf();        // 设置cout流缓冲区指针为out.txt的流缓冲区指针     cout.rdbuf(fileBuf);    cout << "Name " << "Chen"        << endl;    cout << "Sex  " << "Female"      << endl;    cout << "E-mail"<< "Chen@qq.com" << endl;    of.flush();    of.close();    // 恢复cout原来的流缓冲区指针     cout.rdbuf(coutBuf);    cout << "Write Personal Information over..." << endl;    system("PAUSE");    return 0;}

  

C++是通过rdbuf函数来进行流重定向的,例如:

#include <iostream>#include <fstream>using std::cout;using std::streambuf;using std::rdbuf;using std::ofstream;int main( void ){    ofstream fout( "out.txt" );    streambuf * OldBuf = cout.rdbuf( fout.rdbuf( ) ); //保存cout的流缓冲类指针并用fout的流缓冲类指针代替     cout << "example";  //cout的内容被写入文件out.txt中     cout.rdbuf( OldBuf );  //恢复cout的流缓冲类指针     cout << "reload";  //恢复输出到终端     return 0;}