如何解决将 cout 切换回写入屏幕
在我的程序中,我将 cout 切换为使用以下命令写入文件:
int newstdout = open("myFile.txt",O_WRONLY|O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO);
close(1);
dup(newstdout);
close(newstdout);
稍后我将如何在程序中切换回我的 cout 打印到屏幕(终端)?
解决方法
使 cout
(或任何其他流)输出到不同目标的正确方法是调用其 rdbuf()
方法以交换不同的流缓冲区。如果需要,您可以稍后换回旧缓冲区。例如:
#include <iostream>
#include <fstream>
std::ofstream outfile("myFile.txt");
auto cout_buff = std::cout.rdbuf();
std::cout.rdbuf(outfile.rdbuf());
// anything written to std::cout will now go to myFile.txt instead...
std::cout.rdbuf(cout_buff);
// anything written to std::cout will now go to STDOUT again...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。