为了账号安全,请及时绑定邮箱和手机立即绑定

C++中关于fstream的二进制读取问题

C++中关于fstream的二进制读取问题

C++
呼啦一阵风 2018-10-29 09:09:17
同样一段代码 FILE *fpf = fopen(filePath, "rb");     fseek(fpf, 98, SEEK_CUR);     unsigned short int receive_arr[1024] = { 0 };     fread((char*)&receive_arr, sizeof(receive_arr), 1, fpf);     int tmp_count = 0;     for (auto value : receive_arr)cout << "count: " << ++tmp_count << "  value: " << value << endl;就是正确的而使用C++ 的fstream: fstream fpf(filePath, ios::binary);     unsigned short* receive_arr = nullptr;      try     {         receive_arr = new unsigned short(1024);     }     catch (bad_alloc)     {         cerr << "bad_alloc in" << __LINE__ << endl;     }     fpf.seekg(sizeof(char) * 98,ios_base::beg);     fpf.read((char*)receive_arr,2048);     fpf.close();读出来的receive_arr的值就是不对的,这是为什么?
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

ios::binary|ios::in加上这个标志试试,fstream 是混合流,要指定打开方式

查看完整回答
反对 回复 2018-11-03
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

上下两个长度都不一样 receive_arr[1024 ] 和 new unsigned short(1024); 仔细看下 new的用法 ,怎么new数组

查看完整回答
反对 回复 2018-11-03
  • 2 回答
  • 0 关注
  • 1317 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信