我想使用Mr-Edd 的 iostreams 文章中的这个片段在某处打印 std::clog。
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
int main()
{
std::ostringstream oss;
// Make clog use the buffer from oss
std::streambuf *former_buff =
std::clog.rdbuf(oss.rdbuf());
std::clog << "This will appear in oss!" << std::flush;
std::cout << oss.str() << '\\n';
// Give clog back its previous buffer
std::clog.rdbuf(former_buff);
return 0;
}
所以,在主循环中,我会做类似的事情
while (! oss.eof())
{
//add to window text somewhere
}
这是ostringstream 文档,但我无法理解执行此操作的最佳方法。我有一个显示文本的方法,我只想用 ostringstream 中的任何数据调用它。
将发送到 std::clog 的任何内容重定向到我选择的方法的最简单/最佳方法是什么?是如上所述,并填写 while !eof 部分(不确定如何),还是有更好的方法,比如在某处重载一些调用我的方法的“提交”运算符?我正在寻找快速和简单的方法,我真的不想像文章那样开始使用 boost iostreams 定义接收器之类的东西——这些东西太让我头疼了。