文件是存储在外部存储设备(如硬盘、SSD等)上的数据集合,C++通过文件流类提供了强大的文件操作功能。
一、文件基本概念
- 文件类型
文本文件:以ASCII码形式存储,可直接阅读
二进制文件:以二进制形式存储,效率更高但不可直接阅读 - 文件流类
C++通过以下类实现文件操作:
ifstream:输入文件流(读操作)
ofstream:输出文件流(写操作)
fstream:双向文件流(读写操作)
文件打开模式
在打开文件时,需要指定文件的打开模式,以此明确文件的使用方式。通过位掩码常量指定。主要的打开模式如下:
ios::in 打开文件用于读取
ios::out 打开文件用于写入
ios::binary 以二进制模式打开文件
ios::ate 打开文件后定位到文件末尾
ios::app 追加模式,所有写入都追加到文件末尾
ios::trunc 如果文件已存在,先清空内容
二、文本文件的基本操作
1、操作流程(分四步)
包含头文件:要使用文件流,必须包含头文件。
声明文件流对象。
打开文件:创建文件流对象并关联到文件
检查是否成功打开:使用is_open()或直接检查流状态
读写操作:使用流插入(<<)和提取(>>)运算符或其他方法
关闭文件:显式调用close()或依赖析构函数自动关闭
举例说明:
#include //包含头文件
#include
#include
using namespace std;
int main() {
// 写入文件
ofstream outFile(“example.txt”); //声明文件流对象
if (outFile.is_open()) { //检查是否成功打开
outFile << “这是一个示例文件。\n”; //写操作
outFile << “第二行数据。\n”;
outFile.close();
} else {
cerr << “无法创建文件!” << endl;
return 1;
}
// 读取文件
ifstream inFile("example.txt");
if (inFile.is_open()) {
string line;
while (getline(inFile, line)) {
cout << line << endl;
}
inFile.close(); //关闭文件
} else {
cerr << "无法打开文件!" << endl;
return 1;
}
return 0;
}
2、头文件保护
为避免头文件被重复包含导致的编译错误,需使用 头文件保护(Header Guard):
例如:
// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H
// 头文件内容
void myFunction();
#endif // MYHEADER_H