Jas*_*ger 8 c++ console cout stdout
我正在研究一个大量使用"cout << strSomething"的程序.将信息记录到控制台.我需要修改程序,以便所有控制台输出都转到控制台和文件.虽然我可以修改代码中的"cout <<",但是有几个大的第三方库也使用"cout <<"; 这些库由于其许可证而无法修改 - 因此修改对"cout <<"的所有引用都不是解决方案.此外,由于执行命令行的方式,不可能使用"wtee.exe".
我正在使用Visual Studio 2008.我已经在Google网上论坛上发帖了:将cout重定向到文件,这似乎完全符合我的要求.唯一的问题是代码不会编译.我在 - > overflow()和 - > sync()方法调用上得到C2248错误"无法访问受保护的成员".
有谁知道如何编译这段代码?或者同时将cout重定向到控制台和文件的另一种方法?
Sam*_*ler 12
这boost::iostreams::tee_device是为此而做的
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/tee.hpp>
#include <fstream>
#include <iostream>
int
main()
{
typedef boost::iostreams::tee_device<std::ostream, std::ofstream> Tee;
typedef boost::iostreams::stream<Tee> TeeStream;
std::ofstream file( "foo.out" );
Tee tee( std::cout, file );
TeeStream both( tee );
both << "this goes to both std::cout and foo.out" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
示例调用:
samm$ ./a.out
this goes to both std::cout and foo.out
samm$ cat foo.out
this goes to both std::cout and foo.out
samm$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9450 次 |
| 最近记录: |