头文件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来定义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)