我遇到了这个问题 - 当我尝试将一个整数的二进制文件写入文件时,它不会将它写在Delivery文件中。
我的想法是取整数,将其转换为二进制,将其写入文件。之后,如果需要,我会回到程序,写一个新的整数值,然后将新值添加到已经写入的值。即文件中的“5”,返回,写入“3”,然后在文件中有8个。
以下是代码:
id_car | Site_car | descr_car
-----------------------------------
4 | onesite | onedesc
3 | twosite | twodesc
7 | treesite | onedesc
1 | onesite | onedesc
2 | twosite | twodesc
6 | treesite | onedesc
答案 0 :(得分:2)
使用ios::binary
不会导致它将二进制数据写入文件,它只会禁用某些格式,例如,请参阅What the point of using std::ios_base::binary?。
如果你想把一个整数写成二进制文件,我建议你使用这样的东西:
int foo = 0x0F00;
ofstream bar("test.txt", ios::out | ios::binary);
bar.write(reinterpret_cast<char*>(&foo), sizeof(int));
bar.close();
这将取整数,将其重新解释为字符序列并将其输出到文件而不进行格式化(此时需要ios::binary
)。
看到你编辑了这个问题:你不能在磁盘上总结,你只能用字节写,这将覆盖之前的任何数据。要做你想做的事,你必须阅读数字,总结,然后再写下来。您可以使用foo.read(...)
,foo
现在为fstream
并使用ios::in
打开,即可实现此目的。