我知道Visual Studio中的日志记录器,即:
Logger::WriteMessage("foo");
这对于测试代码非常有效,但对于应用程序内部的代码来说则不太实用。因此,我正在寻找一种标准解决方案来重定向代码中的stdout消息。
我知道Visual Studio中的日志记录器,即:
Logger::WriteMessage("foo");
标准输出中的流可以被重新分配,例如:
// 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);
cout
中的streambuf
。 - MSalters