gpt4 book ai didi

c++ - 在 C++ 中写入 stderr 时调用函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:22 26 4
gpt4 key购买 nike

有没有办法在数据写入标准流(例如 stderrstdout)时执行回调函数或调用预定义函数?理想情况下,这可用于允许应用程序在 stdoutfprintf 的情况下使用 printf 正常输出其他 FILE 流,并有条件地执行其他任务,例如根据当前设置断言。这可能会在其他库输出到流时自动触发此错误处理代码。

我知道 stderrstdout 的输出可以使用 std::freopen 重定向到其他 FILE 句柄>。实现提供此行为的备用 FILE 流是否可行,或者是否需要重新实现大量标准库函数?

首选符合标准的 C++ 建议(包括 C++11),但如有必要,我愿意接受仅适用于 Windows 的解决方案。


从那以后,我尝试按照 doomster 的建议实现流缓冲区, 在 Filtering Streambufs 的帮助下詹姆斯·坎泽。除非提出任何其他建议,否则这似乎是您最接近原始建议的方法。它不会拦截 C 风格的输出,我怀疑这是不可能的或不切实际的,但它提供了我想要的所有功能。

最佳答案

您可以替换流缓冲区以拦截这些流的任何输出,请参阅 rdbuf() 函数。我认为你只需要在流缓冲类中实现 overflow() 函数即可。

关于c++ - 在 C++ 中写入 stderr 时调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com