C++数据结构的序列化

C++ serialization of data-structures

本文关键字:序列化 数据结构 C++      更新时间:2023-10-16

我正在研究C++的序列化。如果与以下内容相比,boost::serialization的优势/区别是什么:

ifstream_obj.read(reinterpret_cast<char *>(&obj), sizeof(obj)); // read
// or
ofstream_obj.write(reinterpret_cast<char *>(&obj), sizeof(obj)); // write
// ?

而且,哪一个更好用?

Boost 序列化的最大优点是:

  • 它实际上适用于非平凡 (POD) 数据类型(C++不是 C)
  • 它允许您将序列化代码与存档后端分离,从而为您提供文本、XML、二进制序列化
  • 如果您使用正确的存档,您甚至可以具有可移植性(尝试使用您的示例)。这意味着您可以在一台机器/操作系统/版本上发送,并在另一台机器/操作系统/版本上接收而不会出现问题。

最后,它添加了(a)抽象层,使事情变得不那么容易出错。当然,您可以对建议的序列化方法执行相同的操作,而不会遇到太大问题。

这是一个答案,可以执行您建议的序列化类型,但很安全:

  • 如何将类模板参数传递给 boost::变体?

请注意,Boost 序列化完全了解按位可序列化类型,您也可以告诉它您自己的类型:

  • 提升序列化按位序列化能力