将标准输出重定向到缓冲区,而不是使用 >

Posted

技术标签:

【中文标题】将标准输出重定向到缓冲区,而不是使用 >【英文标题】:Redirect the stdout to buffer,not using > 【发布时间】:2011-08-16 14:38:37 【问题描述】:

我编写了 printf 的实现——myPrintf,它打印到标准输出。 我想验证它是否正常工作。为了检查打印输出的正确性,我想将它与我期望得到的 char 进行比较。如何编写代码以.

我只能使用 printf!

【问题讨论】:

你为什么反对用>将输出放到一个文件中? 如果这是 C++ 为什么不使用 iostreams 呢?然后“捕获”输出只是使用stringstream的问题 在不知道您实际使用什么来打印输出的情况下,很难判断使用什么来捕获输出。 我必须从标准输出重定向到字符缓冲区 【参考方案1】:

您可以通过将couts 缓冲区设置为rdbuf() 来重定向您已打开的文件。

奇怪,C++,只有 printf,但不管怎样。

也可以在 C 中重定向标准输出。

这是一种方法:https://rydow.wordpress.com/2007/10/26/c-code-to-redirect-stdout/

涉及dupdup2

还有这个选项(Rerouting stdin and stdout from C)使用freopen

【讨论】:

或者复制到内存中某个位置的自定义std::streambuf(想想std::ostringstream)。

以上是关于将标准输出重定向到缓冲区,而不是使用 >的主要内容,如果未能解决你的问题,请参考以下文章

运维管道和重定向语法

Linux重定向与管道

有没有办法将系统日志消息重定向到标准输出?

重定向,管道符,黑洞文件

Linux shell中2;&1的含义

将所有输出重定向到 Bash 中的文件 [重复]