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

How to reverse the redirecting output action in CPP?

当我看到这个问题时,我觉得有点好笑:

cout.rdbuf(cerr.rdbuf());

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

How can that be done in C++?

("that" 正在将 normal output stream 重定向回自身 (umm) 并将其与 error output stream 分开)

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

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

cout.rdbuf(some_name); 恢复

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