将整数写入二进制文件(C++)

eqa*_*unn 14 c++ binary integer fstream

我有一个非常简单的问题,这对我来说很难,因为这是我第一次尝试使用二进制文件,我不太了解它们.我想要做的就是将一个整数写入二进制文件.

我是这样做的:

#include <fstream>
using namespace std;
int main () {
    int num=162;
    ofstream file ("file.bin", ios::binary);
    file.write ((char *)&num, sizeof(num));
    file.close (); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我做错了什么,你能告诉我什么?

给我带来麻烦的部分是与file.write一致,我不明白.

先感谢您.

小智 27

给我带来麻烦的部分是与file.write一致,我不明白.

如果您阅读ofstream.write()方法的文档,您将看到它请求两个参数:

  1. 一个指针的数据块与要写入的内容;

  2. 一个整数值,表示该块大小(以字节为单位).

该声明只是将这两条信息提供给ofstream.write():

file.write(reinterpret_cast<const char *>(&num), sizeof(num));
Run Code Online (Sandbox Code Playgroud)

&num是数据块的地址(在这种情况下只是一个整数变量),sizeof(num)是该块的大小(例如Windows平台上的4个字节).

  • 这里重要的注意事项:它从内存中写入数据,因为数据存储在内存中,并且生成的二进制文件在具有不同字节序的机器上将无法读取。 (3认同)