将标准输出重定向到缓冲区,而不是使用 >
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/
涉及dup
和dup2
。
还有这个选项(Rerouting stdin and stdout from C)使用freopen
。
【讨论】:
或者复制到内存中某个位置的自定义std::streambuf
(想想std::ostringstream
)。以上是关于将标准输出重定向到缓冲区,而不是使用 >的主要内容,如果未能解决你的问题,请参考以下文章