需求:一份C++源码中许多 cout<<....<<endl ,终端总是输出很多信息,现在想把这些输出定位到一个文件中去,所以希望可以实现cout的重定向功能。
实现: 将标准输出(cout)重定向到文件out.txt中
freopen("out.txt","w",stdout);
该函数一般用于对标准输入、标准输出以及标准出错流的重定向,实验证明对于普通的文件重定向本函数也可以完成。首先获得FILE指针
FILE *lpf = fopen("out.txt","w");
然后还是通过函数freopen进行文件流的重定向,freopen函数的定义如下:
FILE *freopen(const char *filename,const char *type, FILE *stream);
所以重定向语句为:
freopen("outb.txt","w",lpf);
测试下重定向效果
fprintf(lpf,"hello world");
结果显示,“hello world”出现了文件outb.txt中,重定向成功。
以上这些都是C语言范围内的重定向机制,C++重定向主要由函数rdbuf完成。rdbuf原型如下两个重载函数