如何将发送到stdout的输出转换为字符串

How to get output sent to stdout onto a string

本文关键字:输出 转换 字符串 stdout      更新时间:2023-10-16

我有一个库提供的函数(所以我不能编辑它的源代码),它将输出打印到stdout。我希望在一个字符串变量中得到输出,这样我就可以检查它的一些条件。最好的方法是什么?我可以在没有多线程和文件I/O的情况下完成它吗?

[编辑]类似问题(在评论中指出):

使用多线程:

捕获派生进程的输出以字符串

如果您事先知道输出大小:

将stdout的输出重定向到字符串?

使用rdbuf。

std::stringstream stream;
auto * old = std::cout.rdbuf(stream.rdbuf());
CallFunction();
std::cout.rdbuf(old);
std::string value = stream.str();