C++ fstream文件操作问题记录

今天测试阿里云OSS文件上传接口,用fstream获取文件指针,代码如下

std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(__FILE__, std::ios::in);

该代码读取当前文件,拿到文件指针content,测试没有问题

但是后面讲__FILE__改为某个dwg文件后测试,总是只能上传一部分。

分析过程,肯定是文件读取不完整,提前读到了文件结尾导致的,改为如下方式后读取上传成功

std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(localFiePath, std::ios::in | std::ios::binary);

即添加 std::ios::binary,表示按二进制文件读取。

所以,就像C的fopen函数一样,fstream如果不指定打开方式,默认会以文本方式打开文件,此时对于二进制文件就会出现提前读取结束的问题。

 

posted @ 2020-02-01 17:29  姬无华  阅读(529)  评论(0编辑  收藏  举报