C++:08.文本文件
文本文件
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。通过文件可以将数据持久化
C++中对文件操作需要包含头文件 #include<fstream>
文件类型分为两种:
- 文本文件:文件以文本的ASCII码形式存储在计算机中 
- 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 
操作文件的三大类:
- ofstream:写操作(“程序”作为主体去output file,所以是ofstream) 
- ifstream: 读操作 
- fstream : 读写操作 
| 常用打开方式 | 解释 | 
|---|---|
| ios::in | 为读文件而打开文件 | 
| ios::out | 为写文件而打开文件 | 
| ios::ate | 初始位置:文件尾 | 
| ios::app | 追加方式写文件 | 
| ios::trunc | 如果文件存在先删除,再创建 | 
| ios::binary | 二进制方式 | 
注意:文件打开方式可以配合使用,利用|。例如:用二进制方式写文件 ios::binary |  ios:: out
1 文本文件的读写
1.1 写文本文件
写文本文件一般分为以下几个步骤:
- 创建写文件的流对象:可以用ofstream或者fstream
- 指定打开文件的路径和方式:流对象.open("文件路径",打开方式);,如果没有这个文件,便会自动创建
通常上面两步可以合并为一步:ofstream 流对象("文件路径",打开方式)
- 在文件中写内容:流对象 <<,利用第一步中建立的流对象+左移运算符,向文件中写内容
- 关闭文件:ofs.close();,不可忽略
| 1 |  | 
test01.txt文件内容为:
姓名:张三
性别:男
年龄:18
1.2 读文本文件
读文本文件分为以下几个步骤:
- 创建读文件的流对象:可以用 - ifstream或者- fstream
- 指定打开文件的路径和方式: - 流对象.open("文件路径",打开方式);
通常上面两步可以合并为一步:ifstream 流对象("文件路径",打开方式)
- 判断是否打开成功 - 1 
 2
 3
 4- if (!ifs.is_open()){
 cout <<"文件打开失败!"<<endl;
 return 0;
 }
- 读内容:有四种方法 - 1.创建一个字符数组,通过  流对象 >>右移符号将内容传进数组中
- 2.创建一个字符数组,通过流对象的内置函数getline()将内容传进数组中
- 3.创建一个字符型变量,通过流对象的内置函数get()搭配停止符EOF(End Of File)将内容传进数组中
- 4.创建一个字符串,使用全局函数getline(流对象,字符串),将内容传进字符串中,这个较常用
 
- 1.创建一个字符数组,通过  
- 关闭文件: - ifs.close();,不可忽略
| 1 |  | 
2 进制文件的读写
以二进制的方式对文件进行读写操作,打开方式要指定为 ios::binary ,具体流程和文本文件相同,在下面只写不同的函数
2.1 写二进制文件
二进制方式写文件主要利用流对象调用成员函数write
函数原型 :ostream& write(const char * buffer,int len);
- 字符指针buffer指向内存中一段存储空间。 
- len是读写的字节数 
| 1 |  | 
2.2 读二进制文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char *buffer,int len);
- 字符指针buffer指向内存中一段存储空间
- len是读写的字节数
| 1 |  |