使用seekg()和seekp()控制读写指针实现随机访问,分别以ios::beg、ios::cur、ios::end为基准定位;2. 定位后用read()或write()读写数据,修改内容会覆盖原位置;3. 通过tellg()和tellp()获取当前指针位置,常用于计算文件大小或记录进度;4. 操作二进制文件时需以ios::binary模式打开,并检查文件是否成功打开。

在C++中使用
fstream
seekg()
seekp()
seekg()
seekp()
常用基准位置包括:
例如:
立即学习“C++免费学习笔记(深入)”;
file.seekg(10, ios::beg); // 移动到第10个字节(从头算起) file.seekg(-5, ios::end); // 从末尾往前5个字节 file.seekg(20, ios::cur); // 当前位置往后20字节
使用
seekg()
get()
read()
示例:跳过前几个字节,读取中间一段内容
fstream file("data.txt", ios::in | ios::binary);
if (file.is_open()) {
file.seekg(5); // 跳过前5个字节
char buffer[10];
file.read(buffer, sizeof(buffer));
// 此时buffer包含从第5字节开始的10个字节
}
以读写模式打开文件,定位后直接写入新数据。
注意:写入不会改变文件总长度,只是覆盖原有内容。
fstream file("data.txt", ios::in | ios::out | ios::binary);
if (file.is_open()) {
file.seekp(10); // 定位到第10字节
file.write("NEW", 3); // 写入3字节
file.flush(); // 确保写入磁盘
}
使用
tellg()
tellp()
常用于记录位置或计算已处理数据量。
file.seekg(0, ios::end); streampos fileSize = file.tellg(); // 获取文件大小 file.seekg(0); // 回到开头
基本上就这些。只要掌握
seekg
seekp
tellg
tellp
以上就是C++如何使用fstream进行随机访问的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号