C++文件流的学习01

38 阅读2分钟

1.流?

在计算机中,存在着数据流的概念,它就像我们现实世界中的水流,有起点,有终点,它是一串数据的序列,包括输入流和输出流

C++的流

C++通过一种流的机制提供了更为精确的输入和输出的方法,流是一种非常灵活并且面向对象io 方法,根据对象的不同我们可以分为

文件流

控制台流

字符串流

作为一个初学者,我从简单的文件流开始学习

image.png

如图所示C++的输入流和输出流分别由istream和ostream两个类控制,为了方便双向的输入与输出,这两个类派生出了iostream类,一般写在我们代码的最开头

cin和cout两个东西我们很熟悉,它们实际上是函数,专门用来输入和输出 而<<和>>叫做流插入运算符,我们直接使用因为在相应的类中,对每一个基本的数据类型都做了友元重载的操作,这也说明如果我们想要在我们自己创建的类中使用流插入运算符,我们需要对它进行重载

以上就是我们所说的“控制台流”

下面是文件流,它和控制台流的继承关系是

image.png

这里我们给出ostream类的构造函数来解释一些概念

image.png

显然filename是文件名称或者地址,mode是打开的模式,prot则是打开文件的属性

image.png

这是对mode的一些列举,常用的一般就是输入和输出

C++的文件处理利用了类和对象的思想,文件处理可以看作是一个对象,使用了文件流的类,使用了头文件

文件处理的基本流程

实际上这是一个把大象装进冰箱里面的问题

1.打开文件

open()函数

void open(const char* filename,ios::openmode)

image.png 这些处理模式可以进行搭配,例如 //以写入模式打开文件,并且希望防止文件已经存在,在打开之前截断文件 ostream outf; out.open("file.txt",ios::out | ios::trunc);

//打开一个文件用于读写 fstream file; file.open("file.txtx",ios::out | ios::in);

2.处理文件

写入与读取

写入文件使用<<运算符,但是这里使用的是fstream,ofstream对象,不是cout对象 读取文件使用>>运算符,但是这里使用的是ifstream,fstream,不是cin对象

3.关闭文件

直接调用close函数 以上是简单理论