gpt4 book ai didi

数据结构的 C++ 序列化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:57 24 4
gpt4 key购买 nike

我正在研究 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 Serialization 完全了解按位可序列化类型,您也可以告诉它您自己的类型:

关于数据结构的 C++ 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34999961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com