如何将文件操作转化为?
摘要:文件操作基础概念 核心定义 对文件进行读(输入,从文件到程序) 或写(输出,从程序到文件) 的操作,称为文件操作。C++ 标准库提供了封装完善的接口类,简化文件交互流程。 核心头文件 头文件 作用 &am
文件操作基础概念
核心定义
对文件进行读(输入,从文件到程序) 或写(输出,从程序到文件) 的操作,称为文件操作。C++ 标准库提供了封装完善的接口类,简化文件交互流程。
核心头文件
头文件
作用
<fstream>
包含文件操作核心类(fstream/ifstream/ofstream)
<ios>
包含流状态、打开模式等枚举定义
<istream>
输入流基础类(istream)
<ostream>
输出流基础类(ostream)
<streambuf>
流缓冲区管理类(streambuf)
<iostream>
标准输入输出(cin/cout等,文件操作可复用流语法)
<sstream>
字符串流类(stringstream等,辅助文件数据处理)
核心接口类
C++ 文件操作的核心是三个流类,均继承自基础流类,接口统一:
类名
功能说明
构造函数原型
fstream
双向流(可读可写)
fstream(const char *filename, openmode mode)
ifstream
输入流(仅读)
ifstream(const char *filename, openmode mode)
ofstream
输出流(仅写)
ofstream(const char *filename, openmode mode)
注:filename 为文件路径(相对路径/绝对路径),mode 为打开模式(见 1.4)。
文件打开模式
文件打开模式通过 ios 类的枚举值指定,支持组合使用(用 | 连接):
模式常量
含义
适用场景
ios::in
以输入模式打开(读文件)
ifstream/fstream
ios::out
以输出模式打开(写文件),默认覆盖原有内容
ofstream/fstream
ios::app
追加模式(写文件时在末尾添加,不覆盖)
ofstream/fstream
ios::binary
二进制模式(而非文本模式)
所有流类(读写二进制文件)
ios::trunc
若文件存在则清空内容(默认与 ios::out 绑定)
ofstream/fstream
ios::ate
打开文件后定位到文件末尾
所有流类
常用组合:
文本读:ios::in
文本写(覆盖):ios::out 或 ios::out | ios::trunc
文本写(追加):ios::out | ios::app
二进制读:ios::in | ios::binary
二进制写:ios::out | ios::binary
读写兼顾:ios::in | ios::out(fstream 专用)
核心类继承关系
ios_base (抽象基类,定义流状态、格式控制)
↓
ios (继承 ios_base,封装流的基本接口)
↓
istream (输入流基类,cin 是其对象)
↓
ifstream (文件输入流)、istringstream(字符串输入流)
↑
iostream (继承 istream + ostream,双向流基类)
↓
ostream (输出流基类,cout/cerr/clog 是其对象)
↓
ofstream (文件输出流)、ostringstream(字符串输出流)
↑
fstream (文件双向流,继承 iostream)、stringstream(字符串双向流)
关键缓冲区概念
文件操作默认使用缓冲区(由 streambuf 管理),数据不会立即写入文件/读取到程序,而是积累到一定大小后批量处理。
手动刷新缓冲区:flush()(强制刷新)、endl(换行+刷新)。
关闭文件时(close())会自动刷新缓冲区。
