我知道Visual Studio中的记录器,即:
Logger::WriteMessage("foo");
这对于测试代码非常有用,而对于应用程序内部的代码则不太实用。因此,我正在寻找一种标准解决方案来重定向代码内的stdout消息。
答案 0 :(得分:0)
可以重新分配标准输出流,例如:
// REDIRECT STD STREAM
streambuf * backup;
backup = cout.rdbuf();
stringstream ss;
cout.rdbuf(ss.rdbuf());
// DO SOMETHING
cout << "foo\n";
// PRINT STREAM TO LOGGER
Logger::WriteMessage(ss.str().c_str());
// ASSIGN COUT BACK TO STDOUT
cout.rdbuf(backup);