c++ 文件操作 常用内容总结

本文介绍了C++中文件操作的基本方法,包括文件的打开与关闭、读写操作、更改读写位置及状态检查等。适用于初学者了解如何在C++中进行文件的交互。

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

为了永久保存数据,或从之前保存的数据中获取数据。常常需要对文件进行操作,下面对常用的内容进行总结。

1.打开和关闭文件

要操作文件,首先要打开和关闭文件。
c++ 有两种方式打开文件
第一种:
使用带有文件路径的构造函数,其内部会自动打开文件

fstream file(filePath);

第二种:
先创建一个 fstream 对象,然后调用 open 函数,传入文件路径

fstream file;
file.open(filePath);

两种方式关闭文件
第一种:
超出 fstream 对象作用域,在析构函数中,会自动调用 close 关闭文件

第二种:
主动调用 close 函数

file.close();

为了方便和安全性,在打开文件的时候可以设置,打开方式,以防止获得太大的权限,对文件执行超出预期的操作。
下面列举常用的打开方式

ios::in   	只能读文件
ios::out 	只能写文件
ios::app	以追加的方式打开文件,不用这个标识符打开文件,会把文件之前的内容删除
ios::binary 以二进制方式打开文件(默认是以文本文件方式打开),这种方式只会写入和读出用户预期的二进制,而不会自动加上一些符号。(第二篇参考文件有介绍)
ios::trunc	如果文件以存在,则删除该文件

ofstream, ifstream 和 fstream 默认打开方式为

ofstream ios::out | ios::trunc
ifstream ios::in
fstream  ios::in | ios::out

2.读和写文件

读和写有两种方式,一种是通过符号重载 “<<”(插入器), “>>”(析取器);一种是通过函数 read 和 write.

write ( char * buffer, streamsize size ); // 将 buffer 里面的 size 大小的数据,写入文件
read ( char * buffer, streamsize size ); // 将文件 size 大小的数据,读入 buffer 中
ofstream &put(char ch);  // 写一个字符
ifstream &get(char &ch); // 读一个字符

gcount 获取最近一次 read 的字符数

3.移动读和写的索引位置

默认情况下,打开文件时,读索引的位置为 0,你读几个字节,索引就往后移动几个字节。
写文件时,默认写索引的位置也为 0,如果你打开文件的模式是 app,则写索引的位置在文件的最后面,也随着写入的字符数,自动往后移动。
但是当你想要自动改变当前读和写索引的位置时,则需要调用 seekg (seek get)和 seekp (seek put),seekg 改变读索引的位置,seekp 改变写索引的位置。

下面这种形式,是默认将读写文件索引,定位到距离文件开始处 position 的位置处。

seekg ( pos_type position );
seekp ( pos_type position );

下面这种形式,可以从三个参照系中,选择一个,进行偏移。

seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );

三个参照系分别是:

ios::beg 从流开始位置计算的位移
ios::cur 从流指针当前位置开始计算的位移
ios::end 从流末尾处开始计算的位移

4.获得当前读写索引的位置

tellg
tellp

5.标志

读写文件时,有些标志位需要片段,比如打开文件是否成功,是否读写到文件末尾等等。

file.eof(); //检测是否到文件末尾
file.is_open(); // 文件是否打开
file.bad(); // 读写过程中是否出错

参考文献:

https://developer.aliyun.com/article/75534
https://www.cnblogs.com/litaozijin/p/6582048.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值