fstream是C++中用于文件读写的核心类,通过头文件引入,包含ifstream、ofstream和fstream三个类;支持文本和二进制文件操作,常用open()函数结合ios::in、ios::out、ios::app等模式打开文件;可通过进行文本读写,binary模式下使用read()和write()处理二进制数据;需注意读写指针的控制(seekg、seekp)及状态检查(eof、fail),切换读写方向时应调用clear()或定位函数;正确选择模式并处理细节可实现高效文件操作。

在C++中,fstream 是用于文件操作的核心类,它结合了输入和输出功能,能对文件进行读、写或同时读写。通过
- ifstream:从文件读取数据(输入流)
- ofstream:向文件写入数据(输出流)
- fstream:既能读又能写
下面介绍 fstream 的常用操作方法。
打开文件
使用 open() 成员函数或构造函数打开文件。需指定文件路径和打开模式。
常用打开模式:
立即学习“C++免费学习笔记(深入)”;
- ios::in - 读取
- ios::out - 写入(默认会清空内容)
- ios::app - 追加模式,写入内容添加到文件末尾
- ios::ate - 打开后立即定位到文件末尾
- ios::binary - 以二进制方式操作
- ios::trunc - 若文件存在则清空内容(默认于 out 模式)
示例:打开文件
#includestd::fstream file; file.open("data.txt", std::ios::in | std::ios::out); // 可读可写 if (!file.is_open()) { std::cout << "无法打开文件!\n"; }
读写文本文件
打开文件后,可用类似 cin/cout 的操作符进行读写。
写入文本:
file << "姓名:张三\n"; file << "年龄:25\n";
读取文本:
doxygen是一款好用的程序员辅助工具,它可以让程序添加批添代码更加简单轻松,兼容C++、 C、Java、 Objective-C、Python等主流编程语言,小编提供的doxygen中文手册包含了基本介绍、语法技巧以及进阶技巧等内容,可以让你快速上手操作,有需要的欢迎下载。 基本介绍 Doxygen已经支持生成ANSI编码的chm目录文件(index.hhc)!Doxygen通常是用作生成英文文档的,生成中文文档需要修改输入和输出的码制,这样可以改变解析方式,生成中文文档。但是,你必须意识 到,Dox
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
注意:如果同时读写,中间切换方向时应调用 seekg() 或 seekp(),或使用 clear() 清除状态。
二进制文件操作
以二进制方式读写结构体或原始数据。
写入二进制数据:
struct Person {
char name[20];
int age;
} p = {"李四", 30};
std::fstream binFile("data.bin", std::ios::out | std::ios::binary);
binFile.write(reinterpret_cast(&p), sizeof(p));
binFile.close();
读取二进制数据:
std::fstream binFile("data.bin", std::ios::in | std::ios::binary);
Person p2;
binFile.read(reinterpret_cast(&p2), sizeof(p2));
std::cout << "姓名:" << p2.name << ", 年龄:" << p2.age << std::endl;
binFile.close();
文件指针与状态控制
可控制读写位置和检查流状态。
- seekg(pos):设置读取位置
- seekp(pos):设置写入位置
- tellg():获取当前读取位置
- tellp():获取当前写入位置
- eof():判断是否到达文件末尾
- fail():判断操作是否失败
示例:跳过前几字节再读
file.seekg(10); // 跳过前10字节 char buffer[100]; file.read(buffer, 50);
基本上就这些。掌握 fstream 的打开、读写、模式选择和状态检查,就能灵活处理大多数文件操作需求。关键是根据用途选择合适模式,注意文本与二进制的区别,避免读写冲突。不复杂但容易忽略细节。










