C++ C++;/Visual Studio-如何输出到测试输出窗口?
我了解Visual Studio中的记录器,即:C++ C++;/Visual Studio-如何输出到测试输出窗口?,c++,visual-studio,unit-testing,mstest,C++,Visual Studio,Unit Testing,Mstest,我了解Visual Studio中的记录器,即: Logger::WriteMessage("foo"); 这对于测试代码非常有效,而对于应用程序内部的代码则不太实用。因此,我正在寻找一种标准解决方案来重定向代码中的stdout消息。可以重新分配std out中的流,例如: // REDIRECT STD STREAM streambuf * backup; backup = cout.rdbuf(); stringstream ss; cout.rdbuf(ss.rdbuf());
Logger::WriteMessage("foo");
这对于测试代码非常有效,而对于应用程序内部的代码则不太实用。因此,我正在寻找一种标准解决方案来重定向代码中的stdout消息。可以重新分配std out中的流,例如:
// 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);
//重定向STD流
streambuf*备份;
backup=cout.rdbuf();
细流ss;
cout.rdbuf(ss.rdbuf());
//做点什么
“屏幕”是什么意思?我的意思是标准输出消息通常出现在控制台窗口中,这与屏幕有什么不同?我正在查看Visual Studio中的“输出”+“测试”窗口。您可以使用Windows将输出发送到调试器(如果有)。要重定向std::cout
,您可以替换它的输出缓冲区。但是我仍然需要通过调用“outputdugstringw”替换所有的“cout”。。。对吗?@KlingonJoe:不,你把cout
里面的streambuf
换了一次。