21xrx.com
2024-09-19 23:57:06 Thursday
登录
文章检索 我的文章 写文章
C++如何同时输出到文件和终端?
2023-06-30 13:00:15 深夜i     --     --
C++ 同时输出 文件 终端

在C++编程中,有时候需要将程序的输出同时输出到文件和终端上,这样可以方便地对输出信息进行查看和保存。下面介绍两种实现方法。

方法一:使用重定向操作符“>”

在Linux或MacOS上,在终端执行程序时,可以使用重定向操作符“>”将输出信息写入文件。例如,执行以下命令:


./myprogram > output.txt

则程序输出的信息将同时显示在终端上并被写入 output.txt 文件中。在Windows上,也可以使用类似的方式:


myprogram.exe > output.txt

但是,如果想要在程序中同时输出到文件和终端上,可以使用以下代码:


#include <iostream>

#include <fstream>

using namespace std;

int main() {

  ofstream file("output.txt"); // 打开文件

  streambuf* original_out = cout.rdbuf(); // 保存cout的输出流缓存

  cout.rdbuf(file.rdbuf()); // 将cout的输出流缓存重定向到文件

  cout << "Hello World!" << endl; // 输出到文件

  cout.rdbuf(original_out); // 恢复cout的输出流缓存

  cout << "Hello World!" << endl; // 输出到终端

  return 0;

}

方法二:使用Boost库

Boost是一个C++库集合,提供许多便利的工具和模块。其中就包括了用于同时输出到文件和终端的工具。可以使用如下代码:


#include <iostream>

#include <boost/log/trivial.hpp>

#include <boost/log/utility/setup.hpp>

int main()

{

  boost::log::add_console_log(std::cout); // 初始化终端输出

  boost::log::add_file_log("output.log"); // 初始化日志文件输出

  BOOST_LOG_TRIVIAL(info) << "Hello World!"; // 输出信息

  return 0;

}

以上两种方法都可以实现将程序的输出同时输出到文件和终端上。使用重定向操作符“>”可以简单快捷地完成该操作,但需要在命令行中输入命令;使用Boost库可以在程序中直接实现该功能,但是需要下载并引用该库。具体方法可根据需要选择使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复