C++的实现
fstream fs(“c:\\a.txt”, ios::out);
streambuf* pOld = cout.rdbuf(fs.rdbuf());
cout<< ”my lover!”<<endl; //这句将输出到c:\a.txt上去
cout.rdbuf(pOld);
cout<< ”come on”<<endl; //这句将输出到控制台。

C的实现
#include <ios>
#include <iostream>
#include <fstream>
//若使用包含.h文件方式则编译报错

using namespace std;

void main()
{
ofstream ofs(“e:\\a.txt”);
streambuf *osb = cout.rdbuf(ofs.rdbuf());
cout << ”to file” << endl;
cout.rdbuf(osb);
cout << ”to term” << endl;
}

啊,这样对于实现来说可能不是很妥,改成手动刷新缓冲才有应用价值
#include <stdio.h>
#include <string.h>

void main()
{
FILE old_stdout;
FILE *fp = fopen(“e:\\a.txt”, ”w”);

memcpy(&old_stdout, &_iob[1], sizeof(FILE));
memcpy(&_iob[1], fp, sizeof(FILE));

/*call any functions..*/
printf(“to file”);
/**/

/*把缓冲刷新到文件*/
fflush(stdout);
memcpy(&_iob[1], &old_stdout, sizeof(FILE));
printf(“to term”);
fclose(fp);
}

本文地址:http://www.yaronspace.cn/blog/index.php/archives/164

来自yaronspace.cn  本文链接:http://yaronspace.cn/blog/archives/164