C++文件输入输出流fstream的基本用法

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
608
文章
9
评论
2020年12月26日22:11:34 评论

一、文件流

C++的IO类中定义了三个文件读写流fstream、ifstream以及ofstream,它们都继承于相同的父类istream,通过不同的实现以实现不同的文件流操作。

三者的区别为:

  • ifstream:从文件读取数据
  • ofstream:从文件写入数据
  • fstream:既可以读数据、又可以写数据

1.1 IO接口和读写模式

三个文件流实现了以下几个函数接口:

函数名 用途
open(s, mode) 以mode模式打开文件s
close() 关闭文件流
is_open() 返回文件是否已经打开
read(buff, size) 读入最多size字节数据到buff中
write(buff, size) 写入size字节数据到文件中

在使用open的时候,可以只传入文件s,不指定打开模式。如果不指定模式,系统会自动根据文件类型选择默认的打开模式。同时,除了open()的方式打开文件以外,还可以在对象构造的时候打开文件:

ios::out表示已只读方式打开文件,对应unix c中的O_WRONLY模式。在C++中,有以下读写模式可以选择:

模式 说明
ios::in 以读方式打开
ios::out 以写方式打开
ios::app 以追加写方式打开
ios::trunc 以截断方式打开文件
ios:binary 以二进制方式打开文件
ios::ate 打开文件后指针定位到文件尾

这些模式可以单独使用,也可以组合使用,如果需要组合使用,使用逻辑操作符|或起来即可。这里要特别注意的是ios::out模式默认会截断文件,也就是说,ios::outios::out | ios::trunc效果是一样的,都会将文件截断。如果不希望以截断方式打开文件时,则需要设置读写模式为ios::out | ios::app,以这种模式打开文件后,数据会以追加的方式写入到文件。

1.2 读写文件示例

写文件