我正在使用此函数来编写二进制文件:
ostream& write (const char* s, streamsize n);
我想知道当我的streamize n 小于我的 s 时会发生什么。我原来的代码看起来像这样:
int new_number = 10;
out.write((char*) &new_number, sizeof (new_number));
你能预测当我把它改成时会发生什么:
int new_number = 10;
out.write((char*) &new_number, 2);
这是节省磁盘空间的可能方法吗? 对不起,我忘了提到我想存储24位整数。
答案 0 :(得分:0)
这将写出int
表示的前两个字节。这在某些情况下有效,但不可移植:
int
小于两个字节,则无法节省空间。转换为固定大小的类型(如int16_t
,在必要时检查范围会更安全。