有没有办法执行回调函数,或者在将数据写入标准流(例如stderr
或)时调用预定义函数stdout
?理想情况下,这可用于允许应用程序在其他流的情况下正常输出,并printf
有条件地执行附加任务,例如依赖于当前设置的断言。当其他库输出到流时,这可能具有自动触发此错误处理代码的好处。stdout
fprintf
FILE
我知道输出到stderr
并且stdout
可以FILE
使用std::freopen
. 实现提供这种行为的备用FILE
流是否可行,还是需要重新实现大量标准库函数?
符合标准的 C++ 建议(包括 C++11)将是首选,但如有必要,我会只接受 Windows 解决方案。
从那以后,我尝试按照 doomster 的建议实现流缓冲区,并在James Kanze的Filtering Streambufs提供了一点帮助。除非出现任何其他建议,否则这似乎是您可以获得的最接近原始建议的方法。它不会拦截 C 风格的输出,我怀疑这是不可能或不切实际的,但它提供了我想要的所有功能。