如何反转CPP中的重定向输出操作?

How to reverse the redirecting output action in CPP?

提问人: 提问时间:12/27/2018 更新时间:12/28/2018 访问量:124

问:

当我看到这个问题时,这对我来说似乎有点好笑:

cout.rdbuf(cerr.rdbuf());

是的,已成功将正常输出重定向到错误输出流。但这是噩梦,我想做这个(愚蠢的)动作。但在第一个命令运行后无济于事。即输出流没有变化。REVERSEcerr.rdbuf(cout.rdbuf());

如何在 C++ 中做到这一点?

(“that”是将 back 重定向到自身 (um) 并将其与normal output streamerror output stream)

C++ IOstream ostream

评论

0赞 Pete Becker 12/27/2018
查一下。很容易找到。
0赞 12/27/2018
不好意思?那是什么意思?
1赞 12/27/2018
通过获得的原始流缓冲区可以保存在变量中。这是问题吗?cout.rdbuf()
2赞 Pete Becker 12/27/2018
这意味着做一些研究。你可以从查找功能开始。提示:我看的第一个地方有一个例子,你可以从中构建。std::basic_ostream::rdbuf()
1赞 12/27/2018
天哪,我刚刚尝试了你的方法@PeteBecker,我发现我的问题真的很愚蠢。哎呀,很抱歉打扰了,哈哈。您关于[查找 std::basic_ostream::rdbuf() 的作用]的建议非常有用。

答:

0赞 user6366151 12/28/2018 #1

http://www.cplusplus.com/reference/ios/ios/rdbuf/

streambuf * some_name = cout.rdbuf();存储正常输出流的原始地址。

cout.rdbuf(some_name);进行还原

这也适用于其他类型的流。(尽管它也适用于输入流,但没有理由这样做。