C++学习笔记:二进制数据文件

一、二进制数据文件和文本文件对比

ios::binary  //二进制方式打开

文本文件

二进制数据文件

(类型文件)

读写顺序顺序任意次序
是否有格式转化

有(将所有数据

转成字符类型)

无,便于高速处理数据(以数据的二进制代码存储,存储长度仅与数据类型有关)

是否容易

修改信息

 (参见解释1)

否,更新数据需要重建文件

结束标志

(参见解释2)

eof

加一个特殊标志mark

 解释1:例如把3.14改成3.1415,虽然它们都是double 类型的,但是在文本文件中是不同长度的字符串,直接在原文件中修改会破坏后面其他的数据(因为其他数据的字符位置已定,且紧紧相连着无空隙排列),而二进制数据文件就没有这个问题,double类型都是8字节,存储空间无变化。

 解释2:

 (大佬同学的解释)

二、指针函数

g对应读,p对应写

1.

读:istream input;

移动input流的读指针:

1.input.seekg(120); //表示读指针移到第120个字节处

2.input.seekg(20,ios::beg); //表示读指针从开头位置,后移20个字节

第一个参数:+x表示后移x个字节,-x表示前移

第二个参数:枚举类

ios::cur    当前指针位置

ios::beg   流的开始位置

ios::end   流的末尾位置

返回当前指针位置:

long pos=input.tellg(); 

2.

 写:ostream output;

 移动output流的写指针:

1.output.seekp(120); //表示写指针移到第120个字节处

2.output.seekp(20,ios::beg); //表示写指针从开头位置,后移20个字节

(同读指针函数的解释 )

 返回当前指针位置:

long pos=input.tellp(); 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值