C++(八):fstream读写 *** 作

C++(八):fstream读写 *** 作,第1张

文件fstream定义了三个类型来支持文件IO *** 作。

要读写一个文件,可以定义一个文件流对象,并将对象与文件局者关联起来。每个文件流类都定义了一个名为open的成员函数,可以完成一些系统相关的 *** 作,来定位给定的文件,并视情况打开位读或写模式。

创建文件流对象时,可以提供文件名,此时会自动调用open

用fstream代替iostream& :在要求使用基类型对象的地方,可以使用继承类型的对象来代替。

成员函数open和close:如果定义了一个空文件流对象,可以调用open来将它与文件关联起来,如果调用open失败,枯腊庆failbit会被置位。

一旦文件流与文件关联起来,它会一直保存,此时别的流无法再与该文件绑定,所以有时需要关闭已关联的文件。

自动构造与析构: 用ifstream类型构造一个对象,如果该对象是一个循环中的局部变量,在每个循环中都要创建和销毁一次。当一个对象离开其作用域时,与之关联的文件会自动关闭,即自动调用close。

每个流都有一个关联的 文件模式 ,用来指没握出如何使用文件。

指定文件时有如下限制:

以out模式打开文件会丢弃已有数据: 默认情况下打开ofstream时,文件的内容会被丢弃。 阻止一个ofstream清空给定文件内容的方法时同时指定app模式

每次调用open时都会确定文件模式: 对于一个给定流,每当打开文件时,都可以改变其文件格式。

这是C++里的文件。

fstream.h是头文件,是对文件 *** 作使用的。 继承 iostreamfstream 拥有iostream功能,但并不是包含关系。 fstream 是对文件 *** 作,而 iostream 是 对 标准输入输出文件的 *** 作。

在C++中,对文件的 *** 作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式 *** 作文件,就必须加入头文件fstream.h。使用方法如下:

在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:

void open(const char* filename,int mode,int access)

参数:

filename:要打开的文件名

mode:要打开文件的方式

access: 打开文件的属性

打开文件的方式在类ios(是携蚂所有流式I/O类的基类)中定义,常用的值如下:

ios::app: 以追加的方式打开文件

ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性

ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文

ios::in:  文件以输入方式打开

ios::out: 文件以输出方式打开

ios::nocreate: 不建宴陪立文件,所以文件不存在时打开失败 

ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败

ios::trunc:如果文件存在,把文件长度设为0

可以用“或”把以上属性连接起来,如ios::out|ios::binary

打开文件的属性取值是:

0:普通文件,打开访问

1:只读文件

2:隐含文件

4:系统文件

可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。

例如:以二进制输入方式打开文件c:config.sys

fstream file1

file1.open("c:\config.sys",ios::binary|ios::in,0)

如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:

file1.open("c:\config.sys")<=>file1.open("c:\config.sys",ios::in|ios::out,0)

另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:

fstream file1("c:\辩祥埋config.sys")

特别提出的是,fstream有两个子类:ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。

ifstream file2("c:\pdos.def")//以输入方式打开文件

ofstream file3("c:\x.123")//以输出方式打开文件

所以,在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开,就用ifstream来定义;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12198539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存