首页 > 解决方案 > C++ / Visual Studio - 如何输出到测试输出窗口?

问题描述

我知道 Visual Studio 中的记录器,即:

Logger::WriteMessage("foo");

这对测试代码很有效,对应用程序内部的代码不太实用。因此,我正在寻找一种标准解决方案来重定向代码中的标准输出消息。

标签: c++visual-studiounit-testingmstest

解决方案


可以重新分配 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);

推荐阅读