首页 > 代码库 > 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;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。