C++ 是否可以在每次使用std::cout时执行函数?

C++ 是否可以在每次使用std::cout时执行函数?,c++,C++,每次从主函数或其他函数使用std::cout时,我都希望将日志文件的内容复制到Fltk GUI窗口 我已经实现了一个函数,它完成了复制部分。我想知道是否有可能在代码中每次执行std::cout或std::endl时都运行此函数 我如何实现这一点 编辑: 为了进一步澄清 每次需要运行的功能是: void printProgress(const std::string& strProgress) { std::ostringstream strResultTextStream;

每次从主函数或其他函数使用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输出窗口,我认为您可以使用define来发挥优势:

#define cout f(parameter),cout
其中f是你的函数。用std::cout更改cout如果您愿意,我认为这不会引起错误。

我认为您可以使用define来发挥您的优势:

#define cout f(parameter),cout

其中f是你的函数。如果您愿意,可以使用std::cout更改cout,我认为这不会引起错误。

重定向/复制std::cout的流量和在其上安装一个监视程序是有区别的。包装器如何?也许您可以使用自己的函数,它将执行复制部分,然后使用std::cout?如果我想重定向程序内部的cout输出,我会使用rdbuf将cout streambuf设置为我想要的streambuf。@Loki-一个定制的streambuf可以做到这一点。重定向/复制std::cout的流量和在其上有一个观察者是有区别的。包装器如何?也许你可以使用自己的函数,哪一个将执行复制部分,然后将使用std::cout?如果我想重定向程序内部的cout输出,我会使用rdbuf将cout streambuf设置为streambuf,该streambuf符合我的要求。@Loki-一个定制的streambuf可以做到这一点。这将exapnd改为eg f,我可以添加一个参数吗,你现在高兴吗?他唯一的选择是用宏替换cout,或者使用Ctrl+R将cout替换为fparameter,cout。在每次使用CUT时,他要求函数运行,所以宏看起来很好。考虑当我声明函数空格FoSTOD::OsFraseX=CUT时会发生什么;这将检查到例如f,我可以添加一个参数吗,你现在高兴吗?他唯一的选择是用宏替换cout,或者使用Ctrl+R将cout替换为fparameter,cout。在每次使用CUT时,他要求函数运行,所以宏看起来很好。考虑当我声明函数空格FoSTOD::OsFraseX=CUT时会发生什么;