再会。
我必须使用一些外部函数来为标准输出(通过)产生大量调试信息std::cout
。我想通过重定向cout
到 boost将此信息复制到某个日志文件中tee_device
。我使用以下示例代码:
typedef boost::iostreams::tee_device<ostream, ofstream> TeeDevice;
typedef boost::iostreams::stream<TeeDevice> TeeStream;
int main(int argc, char** argv) {
remove("file.log");
ofstream logFile;
logFile.open("file.log");
TeeDevice outputDevice(cout, logFile);
TeeStream logger(outputDevice);
cout.rdbuf(logger.rdbuf());
cout << "some log info";//this should print both to stdout and to file
logger.close();
}
但是,我在尝试运行它时遇到了分段错误。为什么?
我知道我可以这样做
logger << "some debug log info";
但我需要完全重定向cout
。我怎样才能得到这个?
谢谢, 斯坦尼斯拉夫