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

c++ 文件 *** 作 常用内容总结,第1张

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

1.打开和关闭文件

要 *** 作文件,首先要打开和关闭文件。
class="superseo">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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/994293.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存