c++ - 如何将输出发送到 stdout 到字符串

标签 c++ c

我有一个库提供的函数(因此我无法编辑它的源代码),它会将输出打印到标准输出。我希望在字符串变量中获取该输出,以便我可以检查它的一些条件。做这个的最好方式是什么?如果没有多线程和文件 I/O,我能做到吗?

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

使用多线程:

Capture Output of Spawned Process to string

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

redirect output from stdout to a string?

最佳答案

使用 rdbuf。

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

关于c++ - 如何将输出发送到 stdout 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701162/

相关文章:

c++ - va_arg() 的问题

c++ - 波兰语表达的计算

c++ - 异常代码 "EXC_I386_GPFLT"是什么意思?

c - pthreads 内部是否忙于等待?

c++ - 指向整数数组的指针

C语言,串口阅读器

c++ - boost 异常的错误信息

表示库中项目的类的 c++ 派生类

c++ - 我很困惑如何在这个使用 fork() 克隆进程的示例函数中处理这个 execvp()

c++ - 如何将变量放入更高地址空间(64位)进行测试