C/C++编程笔记:C++中的I / O重定向

在C语言中,我们可以使用函数freopen()将现有的FILE指针重定向到另一个流。
freopen()的原型为
FILE * freopen(const char *文件名,const char *模式,FILE * stream);
例如,将标准输出重定向为一个文本文件,我们可以编写
freopen(“ text_file.txt”,“ w”,stdout);
尽管C ++仍支持此方法,但本文讨论了另一种重定向I / O流的方法。

C ++是一种面向对象的编程语言,它使我们不仅能够定义自己的流,而且还可以重定向标准流。因此,在C ++中,流是一个对象,其行为由类定义。因此,任何表现得像流的东西都是流。
C ++中的Streams对象主要分为三种类型:
(1)istream:此类型的Stream对象只能从流中执行输入操作
(2)ostream:这些对象只能用于输出操作。
(3)iostream:可用于输入和输出操作
所有这些类以及文件流类都从以下类派生:ios和streambuf。因此,文件流和IO流对象的行为类似。
所有流对象还具有类streambuf的关联数据成员。简单地说,streambuf对象是流的缓冲区。从流中读取数据时,我们不会直接从源中读取数据,而是从链接到源的缓冲区中读取数据。同样,首先在缓冲区上执行输出操作,然后在需要时刷新缓冲区(将其写入物理设备)。
C ++允许我们为任何流设置流缓冲区。因此,重定向流的任务只是减少到更改与流关联的流缓冲区。因此,要将流A重定向到流B,我们需要做
获取A的流缓冲区并将其存储在某处
将A的流缓冲区设置为B的流缓冲区
如果需要,将A的流缓冲区重置为其先前的流缓冲区
我们可以使用函数ios :: rdbuf()来执行两次操作。
1)stream_object.rdbuf():返回指向stream_object的流缓冲区的指针
2)stream_object.rdbuf(streambuf * p):将流缓冲区设置为p指向的对象
这是下面的示例程序以显示步骤:

注意:
以上步骤可以浓缩为一个步骤

希望对你有帮助~
另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍分享:

编程学习视频分享:
