C++数据结构的序列化
C++ serialization of data-structures
我正在研究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 序列化完全了解按位可序列化类型,您也可以告诉它您自己的类型:
- 提升序列化按位序列化能力
相关文章:
- 如何使用Python从C++中读取谷物序列化数据
- 无法使用提升正确序列化数据
- 如何从平面缓冲区中反序列化联合结构的 void* 值的大小
- 在模板化数据结构上调用 begin() 或 end()
- 使用 reinterpret_cast 序列化和反序列化数据
- Boost::序列化存储结构时的堆栈溢出错误
- 如何将 boost::beast 中的序列化数据转换为字符串,以便我可以以 FIFO 方式处理它?
- 使用boost::asio将序列化数据写入套接字
- 如何在c++中使用protobuf通过套接字发送序列化数据
- Boost:重新使用/清除text_iarchive以从Asio:receive()中反序列化数据
- 在 C++/Qt 中以文本格式序列化数据结构
- QDataStream 无法序列化数据
- Redis发布/子序列化数据结构体C数据
- 链接错误: <LNK1120> <LNK2020> 在C++中实现一个序列化数据类
- 可视化C++数据结构,最好能容纳一个大的名称列表
- 通过LevelDB将协议缓冲区序列化数据从C++传递到Python
- Boost序列化树结构
- 使用protobuf-net发布反序列化(protocolBuffer)序列化数据
- 如何在c++中序列化树结构
- 从数据库中序列化和反序列化数据的最快/最佳方式