我想使用来自Mr-Edd的iostreams文章的这个代码片段在某处打印std::clog。
所以,在主循环中,我会做类似这样的事情。
这里是ostringstream文档,但我不太理解最佳方法。我有一个显示文本的方法,我只想用ostringstream中的任何数据调用它。
什么是将任何内容发送到std :: clog并重定向到我选择的方法的最简单/最佳方法?像上面那样填写while!eof部分(不确定如何),还是有更好的方法,例如在某个地方重载一些“提交”运算符以调用我的方法?我正在寻找快速简便的方法,我真的不想开始使用boost iostreams定义接收器之类的东西-这些东西超出了我的能力范围。
#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定义接收器之类的东西-这些东西超出了我的能力范围。