C++ C++;/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());

我了解Visual Studio中的记录器,即:

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
换了一次。