C++ 跨平台开发的坑集合

C++ 跨平台开发的坑集合

std::fstream引发的血案

std::fstream::open函数:

void open (const char* filename,
           ios_base::openmode mode = ios_base::in | ios_base::out);
void open (const string& filename,
           ios_base::openmode mode = ios_base::in | ios_base::out);

案发现场:

std::fstream file;
char buf[10] = {0,1,2,3,4,5,6,7,8,9};
file.open("test.dat",ios::truncate|ios::out);
file.write(buf,10);
file.close();

Linux平台文件大小是10个字节,winzhedows平台文件大小 > 10个字节
纳尼。。。什么鬼。。。
百般折腾,头发抓掉一把一把,折腾了大半天后,终于灵光一闪,是不是少了个标志,加上ios::binary后果然神力显现,经过验证大小都一样了。
解锁正确姿势如下:

std::fstream file;
char buf[10] = {0,1,2,3,4,5,6,7,8,9};
file.open("test.dat",ios::truncate|ios::out|ios::binary);
file.write(buf,10);
file.close();

持续更新中。。。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页