微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 cout 切换回写入屏幕

如何解决将 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 举报,一经查实,本站将立刻删除。