C++ primer -IO库-fstream

标准库定义了读写文件流的io工具fsteam类,定义在头文件<fstream>中。对于fstream和sstream,它们继承了iostream,因此接口支持iostream时,也支持使用fstream和sstream。

说明: 用fstream代替iostream&:在要求使用基类型对象的地方,我们可以用继承类型的对象来替代。这意味着,接受一个iostream类型引用(或指针)参数的函数,可以传入fstream(或sstream)类型来调用。也就是说,如果有一个函数接受一个ostream&参数,我们在调用这个函数时,可以传递给它一个ofstream对象完成功能,同时调用的虚函数也将变为ofstream的版本,对istream&和ifstream也是类似的,举例:getline(istream, string)在调用时以下用法是正确的getline(ifstrm, s),作用是读取ifstream类型的对象ifstrm绑定的文件中的一行内容存入到字符串s中。

fstream,定义了读写命名文件的类型:

ifstream:从文件中读取数据;ifstream继承fstream;

ofstream:向文件写入数据;ofstream继承fstream;

fstream:既支持读取文件,也支持写入文件。

以上是处理char字符的类型,对于宽字符类型,有wfstream/wifstream/wofstream。

fstream除普通的io操作:如 ofstrm  >> s; ifstrm << s; 外,还定义了一些用于管理文件流的特有操作:

fstream fstrm; //  创建一个未绑定的文件流,文件流类型是fstream ;

fstream fstrm(s);  // 创建一个fstream对象,并打开名为s的文件(包含扩展名),s是string类型或者C风格字符串的指针。

fstream fstrm(s, mode); // 以指定模式打开文件(读/写,只读,只写)

fstrm.open(s); 打开名为s的文件,返回void;

fstrm.close();// 关闭文件,返回void;

fstrm.is_open(); // fstrm关联的文件是否已打开,已打开返回true;

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

以下是文件模式的含义:

in

 以读方式打开,ifstream的打开默认使用该模式;只可以对ifstream/fstream指定该模式。例:ifstrm.open("文件名", ifstream::in)

out

 以写方式打开,但会截断文件(丢弃文件已有内容),ofstream的打开默认使用该模式,只可以对ofstream/fstream指定该模式。

app

每次写操作前,均定位到文件末尾,不会截断文件,需要将内容添加到文件末尾时,应添加该模式,例:ofstrm.open("文件名", ofstream::app) 或 ofstrm.open("文件名", ofstream::out | ofstream::app)

ate

打开文件后立即定位到文件末尾

trunc

截断文件(丢弃文件已有内容,将文件大小截断至0),只在out模式下可以选择trunc , 需要使用时应在out的同时添加该模式,例: ofstrm.open(s, ofstream::out | ofstream::trunc)

binary

以二进制方式进行IO

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值