是否可以拦截 cout 和 cerr?

Kağ*_*yal 5 c++ iostream std

我有一个库,它使用 std::cout 和 std::cerr 将消息发送到控制台。

我知道,我可以在我的 GUI 应用程序中重定向它。但是,我想知道的是,是否有办法检测在消息实际刷新之前是否使用了 cout 或 cerr?

背景:如果文本来自cerr,我希望能够更改文本颜色并在消息前面放置一个类似“错误:”的字符串。

例如,如果有一条线

cerr << "File not found" << endl;
Run Code Online (Sandbox Code Playgroud)

在库中,是否有一种回调或事件可用于确保我可以执行

cerr << "Error: ";
Run Code Online (Sandbox Code Playgroud)

从我这边之前的原始错误信息而不触及原始库?

请注意,在问题中重定向到字符串stdout/stderr 重定向到字符串需要我知道库何时创建输出并对该字符串执行某些操作。相反,我正在寻找一种自动机制。