C++文件输入输出

发布时间:2024年01月05日
fstream头文件定义了三个类型来支持文件操作:
  1. ifstream从指定文件读取数据。
  2. ofstream从指定文件写入数据。
  3. fstream从指定文件读取或写入数据。

fstream不仅继承了iostream类型的操作,还增加了一些对文件进行操作的成员。

取自C++primer

使用文件流对象

定义一个文件流对象,对文件实现读写操作,并将流与文件关联。

每个文件流类都定义了名为open的成员函数,并且创建文件流对象时,如果指定了文件名,那么就会自动调用open这个成员函数,也可以不指定文件名。

  1. 指定文件名例子:ifstream in(file);//创建文件流in并调用open成员函数打开文件file
  2. 未指定文件名例子:ifstream in;?????in.open(file);//和上面的例子实现的操作是一样的? ?

在C++新标准中,文件名可以是string类型,或者是C版风格字符串类型。

旧版本标准只允许C版风格字符串类型。

用fstream&代替iostream&

因为在类的继承中,在使用父类对象的地方,也可以用子类对象来代替

成员函数open和close

ifstream in(file);//创建一个ifstream,并打开文件file,定义时带文件名

ofstream out;//创建一个ofstream,但是并没有指定文件名,后续可以用open成员函数打开文件

out.open(file);//打开文件file

if(out);//判断是否打开成功

一个文件流被打开,就应该与文件保持关联,如果要使文件流关联另一个文件,要先使用close成员函数关闭先前的文件。

例子:

ifstream in(file);//将文件流与文件file关联

in.close();//断开关联(关闭文件file)

in.open(file1);//文件流in与文件file1建立关联

打开一个已经打开了的文件,会使文件流的failbit置位,之后文件流的所有操作都会失效。

当一个流对象被销毁时,close成员函数会被自动执行。

文件模式

取自C++primer

在任何方式下打开文件,都可以指定文件模式,但是文件模式也有限制:

取自C++primer,这张图片很重要

每个文件流类型都定义了默认文件模式,在没有指定文件模式的情况下:

  1. 与ofstream关联的文件默认以out模式打开
  2. 与ifstream关联文件默认以in模式打开
  3. 与fstream关联的文件默认以in和out模式打开

使用文件模式需要注意的地方:

以out模式打开文件,文件之前的内容会被清空。想要继续在原有数据上进行追加,那就需要使用app模式。

ofstream app("str",ofstream::app);//在原有数据上继续追加数据

ofstream app1("str",ofstream::app | ofstream::out);//与上面的操作一致,显式的使用out模式,其实app模式会自动使用out模式,这也是两个模式同时使用的语法
使用open成员函数指定文件模式
ofstream out;

out.open("str",ostream::out);//使用out模式打开

out.close();//关闭文件,则可将文件流关联到其他文件

文章来源:https://blog.csdn.net/2301_81565741/article/details/135387413
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。