用C ++编写二进制文件中的整数

时间:2014-10-23 06:50:09

标签: c++ binaryfiles

假设我想将整数写入文件并稍后阅读。我是否认为确保每个整数在文件中占用4个字节的唯一方法是将它们写入二进制文件?

3 个答案:

答案 0 :(得分:3)

使用std::ofstream,您可以执行以下操作:

 std::ofstream os("myfile.bin", std::ios::binary); 
 int x = 42;
 os.write(reinterpret_cast<char*>(&x), sizeof(x)); 

阅读由std::ifstream::read以完全相同的方式完成。您必须将您正在阅读/写入的位置投射到char *,因为这是readwrite所期望的类型。

使用sizeof也适用于非4字节的整数,但当然,你不能在具有2字节整数的机器上读取4字节整数,反之亦然。

当然,如果您希望存储“可移植”,则需要关注字节顺序。但是如果你这样做是为了在本地机器上存储一些数据,这没关系。

答案 1 :(得分:2)

你是对的,假设它是一个32位整数。

如果您将其作为整数写入文件,则文本编辑器将无法读取该文件,但会使用整数的大小。

答案 2 :(得分:0)

为什么需要将整数写入二进制格式而不是纯文本?

每个整数完全占据4字节=&gt;这取决于整数的大小,如果您确定所有整数都可以用4字节表示。这与强制文件格式为二进制无关。您可以直接使用纯文本文件来存储整数。但是,如果您希望文件更紧凑,可以尝试使用二进制文件。

使用二进制文件实现批量读取更容易。但我怀疑你是否需要那个。