文件操作
程序运行时产生的数据均为临时数据,一旦结束,就会被释放
可通过文件使得数据持久存储
-
头文件:
-
文件类型:
- 文本文件:以文本的ASCII码形式存放在计算机中
- 二进制文件:以文本的二进制形式存放在计算机中,用户一般不可读
-
三大操作:
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
1. 文本文件
1.1 写文件
-
步骤
- 包含头文件
#include<fstream>
- 创建流对象
ofstream ofs;
- 打开文件
ofs.open("filepath",openways);
- 写数据
ofs<<"writtentext";
- 关闭文件
ofs.close();
- 包含头文件
-
文件打开方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZVMsHvP-1629103350673)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20210816161101110.png)]
注意:文件打开方式可配合使用,利用 | 操作符
-
注意:文件默认保存在项目所在路径
1.2 读文件
-
步骤
-
包含头文件
#include<fstream>
-
创建流对象
ifstream ifs;
-
打开文件并判断是否打开成功
ifs.open("filepath",openways);
if(!ifs.is_open()){}//该语句来判断是否打开成功
-
读数据
四种方式读取
//第一种方式 char buf[1024]={0}; while(ifs>>buf){//一行一行读 cou<<buf<<endl; } //第二种方式 char buf[1024]={0}; while(ifs.getline(buf,sizeof(buf))){//一行一行读 cou<<buf<<endl; } //第三种方式 string buf; while(getline(ifs,buf)){//一行一行读 cou<<buf<<endl; } //第二种方式 char c; while((c=ifs.get()) != EOF){//EOF:end of file也可用 ~(c=ifs.get()) cou<<buf<<endl; }
-
关闭文件
ifs.close();
-
2. 二进制文件
以二进制方式对文件进行读写操作时,打开方式要包含ios::binary
2.1 写文件
二进制写文件主要利用流对象调用成员函数write
-
格式
ostream& write(const char * buffer,int len);
-
参考解释:字符数组buffer指向内存中一段存储空间,len指读写的字节数
-
提示:尽量不要用c++的string,可能会出现一些问题,可用字符数组代替
2.1 读文件
二进制写文件主要利用流对象调用成员函数read
-
格式
ostream& read(char * buffer,int len);
-
参考解释:字符数组buffer指向内存中一段存储空间,len指读写的字节数
-
提示:尽量不要用c++的string,可能会出现一些问题,可用字符数组代替