第8章 标准IO库(5)

本文详细介绍了C++中文件流(fstream)的各种模式及其组合使用方式,包括in、out、app、ate、trunc和binary等模式的作用及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在打开文件时,无论是调用open还是以文件名作为流初始化的一部分,都需要指定文件模式(file mode)。每个fstream类都定义了一组表示不同模式的值,用于指定流打开的不同模式。与条件状态标志一样,文件模式也是整型常量,在打开指定文件时,可用位操作符设置一个或多个模式。文件流构造函数和open函数都提供了默认实参设置文件模式。默认值因流类型的不同而不同。此外,还可以显式地以模式打开文件。

in 打开文件做读操作

out 打开文件做写操作

app 在每次写之前找到文件尾

ate 打开文件后立即将文件定位在文件尾

trunc 打开文件时清空已存在的文件流

binary 以二进制模式进行IO操作

out、trunc和app模式只能用于指定与ofstream或fstream对象关联的文件;in模式只能用于指定与ifstream或fstream对象关联的文件。所有的文件都可以用ate或binary模式打开。ate模式只在打开时有效:文件打开后将定位在文件尾。以binary模式打开的流将文件以自己序列的形式处理,而不解释流中的字符。

默认时,与ifstream流对象关联的文字将以in模式打开,该模式允许文件做读的操作;与ofstream关联的文件则以out模式打开,使文件可写。以out模式打开的文件会被清空:丢弃该文件存储的所有数据。

从效果来看,为ofstream对象指定out模式等效于同时指定了out和trunc模式。

对于用ofstream打开的文件,要保存文件中已存在的数据,唯一方法是显式地指定app模式打开。

1. 对同一个文件作输入和输出运算

默认情况下,fstream对象以in和out模式同时打开。当文件同时以in和out打开时不清空。如果打开fstream所关联的文件时,只使用out模式,而不指定in模式,则文件会清空已存在的数据。如果打开文件时指定了trunc模式,则无论是否同时指定了in模式,文件同样会被清空。

	string file("C:\\Documents and Settings\\10170660\\Desktop\\AssetHttpHandler.py");
	fstream inoutfile(file.c_str(), fstream::in|fstream::out);
2. 模式是文件的属性而不是流的属性

每次打开文件时都会设置模式。

只要调用open函数,就要设置文件模式,其模式的设置可以使显式的也可以是隐式的。如果没有指定文件模式,将使用默认值。

3. 打开模式的有效组合

并不是所有的打开模式都可以同时指定。

out 打开文件做写操作,删除文件中已有的数据

out|app 打开文件做写操作,在文件尾写入

out|trunc 与out模式相同

in 打开文件做读操作

in|out 打开文件做读、写操作,并定位于文件开头处。

in|out|trunc 打开文件做读、写操作,删除文件中已有的数据。

上述所有的打开模式组合还可以添加ate模式。对这些模式添加ate只会改变文件打开时的初始定位,在第一次读或写之前,将文件定位于文件末尾处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值