当前位置:   iOS > 正文

将整数写入二进制文件C++的问题

c++,binary,fstream,file,ios,windows,linux,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我正在使用fstream将整数写入二进制文件.

int main(){

fstream f1;
int num = 2, num2 = 0;

f1.open("dat1", ios::app | ios::out | ios::in | ios::binary);

f1.write((char *)num, sizeof(int));
f1.seekp(0);
f1.read((char *)num2, sizeof(int));

cout << num2;

}

问题出在f1.write上.我可以写一个数组的二进制文件,但是当我尝试只编写一个int块时,它给了我一个错误:

Project.exe中0x522C7EA6(msvcp120d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000002.

我不明白问题是什么.



1> Bathsheba..:

你需要转换to的地址,numchar*不是num自己.事实上,使用结果的行为(char*)num未定义的,这解释了崩溃.

f1.write((char *)&num, sizeof(num));改用.f1.read同样地改变.

我也改变了这个sizeof论点:我更喜欢这种风格,因为它可以防范类型变化.接下来,如果您在不同平台(例如Windows和Linux)上编写和阅读,则需要考虑字节序.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8906
推荐阅读
相关标签
  

闽ICP备14008679号