一、简介
C++中的IO操作被包装成类,它们的继承关系如下。
二、C++文件IO
C++的文件IO依赖<fstream>库,包含三个类:ifstream(从文件中读)、ofstream(向文件中写)、fstream(对文件读写)。
我们只讲fstream的使用,另外两种相比而言知识功能受限,操作方法相同。
1.创建文件流对象,有两种方式。
a.
fstream iofile(char *filename,mode=default,filetype=default);//default表示参数使用默认值
b.
fstream iofile;
iofile.open(char *filename,mode=default,filetype=default);
2.文件打开模式
- ios::in 读取,文件不存在,失败。
- ios::out 写入,文件不存在,创建。
- ios::ate 文件指针移动到文件末尾
- ios::app 追加模式,文件不存在,创建
- ios::trunc 清空文件
- ios::binary 二进制形式打开
以上模式都可以可以使用 | 运算符连接使用,但是注意,in,out,app可以单独使用,其余只能和它们三个中至少一个连用(trunc必须和ios::out连用)。app和任意模式连用都是文件不存在就创建,但ios::in|ios::out连用文件不存在打开失败。
3.文本模式和二进制模式
文本模式下使用析取器>>和插入器<<进行读写操作,遇到空格或换行符停止本次读写操作。由于插入器<<进行写操作时,会将数据转换为字符串再写入,所以使用析取器读取时只能写入字符数组或字符串,不能直接写入其他数据类型(可以考虑进行数据类型转换)。
二进制模式下使用get(),put(),read(),wtite()进行读写,本人常用read()和write()。
4.文件类型
0:普通文件
1:只读文件
2:隐藏文件
3:系统文件
不用管这个参数,使用默认值即可,目前没用到过。
/*
@author:liangzai
@date:2020.10.27
*/
#include <iostream>
#include<