C++ / Visual Studio - 如何将输出内容输出到测试输出窗口?

4

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

Logger::WriteMessage("foo");

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

“屏幕”是什么意思?我的意思是标准输出消息通常出现在控制台窗口中,这与“屏幕”有何不同? - john
我正在查看Visual Studio中的“输出”+“测试”窗口。 - KlingonJoe
但我仍然需要将所有的“cout”替换为调用“OutputDebugStringW”...是吗? - KlingonJoe
1
@KlingonJoe:不,你只需要替换一次cout中的streambuf - MSalters
@MSalters 谢谢!我能够将cout重定向到stringstream,并打印流中的字符串。 - KlingonJoe
显示剩余3条评论
1个回答

4

标准输出中的流可以被重新分配,例如:

// 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接