【发布时间】:2019-11-21 09:47:23
【问题描述】:
每次,std::cout 从主函数或其他函数中使用,我想将日志文件的内容复制到 Fltk GUI 窗口。
我已经实现了一个复制部分的功能。我想知道是否可以让这个函数在每次std::cout 或者std::endl 在代码中执行时都运行。
我该如何实现呢?
编辑: 如需更多说明,
每次需要运行的函数是:
void printProgress(const std::string& strProgress)
{
std::ostringstream strResultTextStream;
strResultTextStream << m_pLogOutput->value();
strResultTextStream << strProgress;
m_pLogOutput->value(strResultTextStream.str().c_str());
}
将数据添加到输出窗口(fl_multiline_output)需要上面的 4 行代码。现在我已将标准输出消息重定向到日志文件。我想每次都运行这个函数将日志文件的内容复制到 m_pLogOutput(输出窗口)
【问题讨论】:
-
重定向/复制
std::cout的“flux”和有一个观察者之间是有区别的。 -
包装器怎么样?
-
也许你可以使用自己的函数,它会完成复制部分,然后使用
std::cout? -
如果我想从程序内部重定向 cout 输出,我会使用 rdbuf 将 cout streambuf 设置为我想要的 streambuf。
-
@Loki - 量身定制的
streambuf可以做到这一点。
标签: c++