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

在C语言中,咱们可使用函数freopen()将现有的FILE指针重定向到另外一个流。ios

freopen()的原型为编程

FILE * freopen(const char *文件名,const char *模式,FILE * stream);微信

例如,将标准输出重定向为一个文本文件,咱们能够编写编程语言

freopen(“ text_file.txt”,“ w”,stdout);函数

尽管C ++仍支持此方法,但本文讨论了另外一种重定向I / O流的方法。学习

C ++是一种面向对象的编程语言,它使咱们不只可以定义本身的流,并且还能够重定向标准流。所以,在C ++中,流是一个对象,其行为由类定义。所以,任何表现得像流的东西都是流。spa

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++编程!弯道超车,快人一步!笔者这里或许能够帮到你~

C语言C++编程学习交流圈子,QQ群1090842465点击进入】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!

编程学习书籍分享:

编程学习视频分享:

相关文章
相关标签/搜索