使用特定代码段将输出重定向到文件
std::cout
为我们提供了一种非常方便的打印方式,使用起来也十分方便,易于扩展,并可全局访问。即使我们想打印对应的信息时,比如错误信息,我们可以使用错误输出std::cerr
进行输出,其和cout
的用法一样,只不过一个从标准通道进行输出,另一个从错误通道进行输出。
当我们要打印比较复杂的日志信息时。比如,要将函数的输出重定向到一个文件中,或者将函数的打印输出处于静默状态,而不需要对函数进行任何修改。或许这个函数为一个库函数,我们没有办法看到其源码。可能,这个函数并没有设计为写入到文件的函数,但是我们还是想将其输出输入到文件中。
这里可以重定向输出流对象的输出。本节中,我们将看到如何使用一种简单并且优雅地方式来完成输出流的重定向。
How to do it…
我们将实现一个辅助类,其能在构造和析构阶段,帮助我们完成流的重定向,以及对流的定向进行恢复。然后,我们来看其是怎么使用的:
-
包含必要的头文件,并声明所使用的命名空间:
#include <iostream> #include <fstream> using namespace std;
-
我们实现了一个类,其具有一个文件输出流对象和一个指向流内部缓冲区的指针。
cout
作为流对象,其内部具有一个缓冲区,其可以用来进行数据交换,我们可以保