参考链接 C++移动和获取文件读写指针(seekp、seekg、tellg、tellp)

1、利用seekp、seekg成员函数控制读写指针位置

在读写文件时,有时希望直接跳到文件中的某处开始读写,这就需要先将文件的读写指针指向该处,然后再进行读写。

ifstream 类和 fstream 类有 seekg 成员函数,可以设置文件读指针的位置;
ofstream 类和 fstream 类有 seekp 成员函数,可以设置文件写指针的位置。

所谓“位置”,就是指距离文件开头有多少个字节。文件开头的位置是 0。
这两个函数的原型如下:

ostream & seekp (int offset, int mode);
istream & seekg (int offset, int mode);

mode 代表文件读写指针的设置模式,有以下三种选项:

ios::beg:让文件读指针(或写指针)指向从文件开始向后的 offset 字节处。offset 等于 0 即代表文件开头。在此情况下,offset 只能是非负数。
ios::cur:在此情况下,offset 为负数则表示将读指针(或写指针)从当前位置朝文件开头方向移动 offset 字节,为正数则表示将读指针(或写指针)从当前位置朝文件尾部移动 offset字节,为 0 则不移动。
ios::end:让文件读指针(或写指针)指向从文件结尾往前的 |offset|(offset 的绝对值)字节处。在此情况下,offset 只能是 0 或者负数。

2、利用 tellg、tellp 成员函数以字节数形式返回读写指针位置

ifstream 类和 fstream 类还有 tellg 成员函数,能够返回文件读指针的位置;
ofstream 类和 fstream 类还有 tellp 成员函数,能够返回文件写指针的位置。

这两个成员函数的原型如下:

int tellg();
int tellp();

要获取文件长度,可以用 seekg 函数将文件读指针定位到文件尾部,再用 tellg 函数获取文件读指针的位置,此位置即为文件长度。

C++ fstream类移动读写指针和字节数形式获取该指针位置(seekp、seekg、tellg、tellp)相关推荐

  1. C语言中 指针变量 取地址符的用法 *指针变量名的用法

    文章目录 总结 Intro Code 图示 总结 众所周知,内存可以看成一个一个相邻的格子(类比Excel),而数据就存储于这些格子之中(size大的变量占用格子数多,size小就占用小).而每个格子 ...

  2. C++文件流:myfstream,fstream,文件读写,随机文件读写【C++文件流】(59)

    文件流 myfstream fstream Test myfstream fstream 流对象的定义 流对象关联文件 open 函数 打开方式 关闭流对象 文件读写 读写文本文件 读写接口 读一字/ ...

  3. 如何使用 fstream 类进行文件的 I/O 处理

    概述 大多数 C++ 程序员都熟悉不止一个文件 I/O 库.首先是传统的 Unix 风格的库,它由一些低级函数如 read() 和 open()组成.其次是 ANSI C 的 <stdio.h& ...

  4. C++读写文件操作(fstream、ifstream、ofstream、seekg、seekp、tellg、tellp用法)

    本文主要总结用C++的fstream.ifstream.ofstream方法读写文件,然后用seekg().seekp()函数定位输入.输出文件指针位置,用tellg().tellp()获取当前文件指 ...

  5. 一个有关fstream类的bug

    一个有关fstream类的bug 近日写程序需要读出文件,对读出的内容作些修改,再写回到文件中. 突然发现一个莫名其妙的问题,写回去的时候居然在文件末尾增加了几个字 符.感到很不可思议.具体代码如下: ...

  6. python 类 文件读写与模块

    初始化类的属性 def __init__(self,name): #self不能省self.name=name 注意:在定义类方法时,self不能省 继承 class 子类名(父类名): class ...

  7. C++类占字节数讲解

    空类的情况 示例代码: class B{};int _tmain(int argc, _TCHAR* argv[]) {cout << sizeof(B) << endl; / ...

  8. C#Binary类二进制文件读写转换

    需要创建BinaryWriter类对象 进行写入 需要创建BinaryReader类对象 进行读取 需要创建两个FileStream类对象 进行读 和写 代码如下 <====> C# Ja ...

  9. 语言axff所占字节数_【每日一答】(74)数组名v.s.指针变量,C语言其实很简单形象比喻为“是一个朋友圈的”...

    下图选自<C语言其实很简单>第8章: 问:请问张老师!书上第227页一句话:指针变量a本身的地址(a所在内存字节编号)是数组的地址,数值上与元素a[0]的地址相等! 这句话是什么意思,我看 ...

最新文章

  1. OpenCV在ARM上的移植
  2. CleanAOP实战系列--WPF中MVVM自动更新
  3. 警告:failed to load the sqljdbc_auth.dll cause no sqljdbc_auth in java.library.path
  4. MYSQL timestamp NOT NULL插入NULL的报错问题
  5. vc6.0转vs2005中字符串的问题
  6. Go gin web框架介绍
  7. 你所能用到的数据结构(四)
  8. pyqt5-步长调节器
  9. js判断页面点击事件
  10. Python实现中文文档的简体与繁体互相转换
  11. 《C++标准程序库》学习笔记(一)C++相关特性
  12. 100 道 Linux 笔试题,能拿90分以上的都去了BAT
  13. 公式中的引号怎么输_Excel计数函数中这些奇怪的参数让我百思不得其解!
  14. 正则表达式 常用实例 22/10/12
  15. 1 12c语言,1.4.1 Oracle数据库12c中PL/SQL的新特性
  16. Flutter图片宽高获取
  17. Mac m1 安装php redis扩展
  18. win2003 启用了Internet Explorer增强的安全配置
  19. Android字节码插桩
  20. 网页制作怎么入服务器,网站后台是怎么做的 如何进入网站后台

热门文章

  1. 算法练习 Week2
  2. 三国志战略版:Daniel_S6再论五谋
  3. Azure Kubernetes 服务 (AKS)
  4. 【kafka连载三】windows本地kafka常用操作集合(持续更新)
  5. py语法基础016_迭代器的概念
  6. 投资,从拒绝平庸的机会开始
  7. 【原创】浙西大峡谷之行
  8. 使用 acme.sh 配置 https 免费证书
  9. 第六十七章 SQL函数 ISNUMERIC
  10. [信息系统项目管理师-2023备考]信息化与信息系统(一)