在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语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!
编程学习书籍分享:
编程学习视频分享: