【问题标题】:c++ how to write integers to a binary file that stay 4 bytes longc ++如何将整数写入保持4字节长的二进制文件
【发布时间】:2016-10-20 18:31:30
【问题描述】:

我想将一堆整数写入一个文件,然后再读取它们。我的问题是,当我将整数写入文件时,较小的整数最终使用不到 4 个字节。因此,例如 1 表示为 01 而不是 00 00 00 01。这意味着我将无法读取文件,因为我不知道一个整数在哪里开始和结束。如何使我写入文件的整数始终为 4 个字节长?我的代码如下:

std::fstream file;
file.open("test.bin", std::ios::out | std::ios::binary);
for each(int i in vectorOfInts) {
    file << i;
}
file.close();

【问题讨论】:

标签: c++


【解决方案1】:

您似乎对文本文件和二进制文件感到困惑。 &lt;&lt; 运算符用于文本文件。它将值转换为文本并将其写入文件。您需要使用write 方法将本机二进制格式的整数写入文件。下面会将 4 个字节写到文件中。

file.write( reinterpret_cast<const char *>(&i), sizeof(i));

您可能还需要考虑数据的字节顺序,具体取决于将读取数据的内容。

您也可以使用以下方法编写整个向量而无需循环:

file.write( reinterpret_cast<const char *>(&vectorOfInts[0]), vectorOfInts.size()*sizeof(int));

【讨论】:

  • 啊我现在看到了曙光
猜你喜欢
  • 2011-08-06
  • 2021-05-17
  • 1970-01-01
  • 2011-04-06
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
相关资源
最近更新 更多