c++ 结构体 二进制序列化 github
在C++中,结构体是一种自定义的数据类型,可以包含不同类型的数据成员。为了将结构体进行二进制序列化,我们可以使用C++标准库中的fstream类,或者第三方库如Protocol Buffers、Boost Serialization等。
sizeof结构体大小下面是一个简单的示例,演示如何使用fstream类将结构体进行二进制序列化:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
struct MyStruct {
    int id;
    std::string name;
    double score;
};
int main() {
    MyStruct ms = {1, "Alice", 90.5};
    std::ofstream outfile("data.bin", std::ios::binary);
    outfile.write(reinterpret_cast<char*>(&ms), sizeof(ms));
    outfile.close();
    return 0;
}
```
在上面的示例中,我们定义了一个名为MyStruct的结构体,包含一个int型、一个string型和一个double型的数据成员。然后,我们创建了一个MyStruct类型的变量ms,并初始化为{1, "Alice", 90.5}。接着,我们打开一个名为"data.bin"的二进制文件输出流,并将ms结构体写入到该文件中。最后,我们关闭输出流。
需要注意的是,在进行二进制序列化时,我们需要将结构体的数据成员按照其在内存中的顺序进行写入。因此,在上面的示例中,我们使用了reinterpret_cast将ms结构体的地址转换为char*类型,然后通过sizeof(ms)获取结构体的大小,将整个结构体写入到文件中。
另外,如果你想在GitHub上到更多关于C++结构体二进制序列化的相关资源或代码示例,你可以搜索相关的关键词或使用GitHub的搜索功能进行查。