CFile Read 读取二进制的问题

本文探讨了在使用C++进行文件读取时遇到的EOF(文件结束)问题,特别是当读取二进制文件时,如何避免因误将特定字节解释为EOF而提前终止读取。文章提供了具体的解决方案,包括正确设置文件打开模式和选择适当的读取方法。
部署运行你感兴趣的模型镜像

 今天动手编码,从文件中读一段二进制。

virtual UINT Read( void* lpBuf, UINT nCount );
但是只能读出来一部分内容。比如nCount=2000,文件到最后还有2000多,但是只能读出来145,百思不解。

后来发现文件中要读取的位置第146字节是'1A',由于1A在ASCII中是EOF。所以Read就认为文件结束了。

把Open改成file.Open(csFile,CFile::modeRead|CFile::typeBinary);  一切OK。

CFile::typeBinary是以二进制的方式读取。

那么总结一下,如何能够从文件中读取到正确的数据

1 file.Open(csFile,CFile::modeRead)

CFile::modeRead一定要有,当然也可以使modeReadWrite,但速度肯定是比较慢

2 保证偏移量正确

3 超过64K大小要用ReadHuge()

4 读取二进制要用CFile::typeBinary

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值