假设我想将整数写入文件并稍后阅读。我是否认为确保每个整数在文件中占用4个字节的唯一方法是将它们写入二进制文件?
答案 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 *
,因为这是read
和write
所期望的类型。
使用sizeof
也适用于非4字节的整数,但当然,你不能在具有2字节整数的机器上读取4字节整数,反之亦然。
当然,如果您希望存储“可移植”,则需要关注字节顺序。但是如果你这样做是为了在本地机器上存储一些数据,这没关系。
答案 1 :(得分:2)
你是对的,假设它是一个32位整数。
如果您将其作为整数写入文件,则文本编辑器将无法读取该文件,但会使用整数的大小。
答案 2 :(得分:0)
为什么需要将整数写入二进制格式而不是纯文本?
每个整数完全占据4字节=&gt;这取决于整数的大小,如果您确定所有整数都可以用4字节表示。这与强制文件格式为二进制无关。您可以直接使用纯文本文件来存储整数。但是,如果您希望文件更紧凑,可以尝试使用二进制文件。
使用二进制文件实现批量读取更容易。但我怀疑你是否需要那个。