C++;数据结构的序列化 我正在学习C++中的序列化。与以下内容相比,boost::serialization的优势/区别是什么: ifstream_obj.read(reinterpret_cast<char *>(&obj), sizeof(obj)); // read // or ofstream_obj.write(reinterpret_cast<char *>(&obj), sizeof(obj)); // write // ? ifstream_obj.read(reinterpret_cast(&obj),sizeof(obj));//阅读 //或 流对象写入(重新解释强制转换(&obj),大小(obj));//写 // ?

C++;数据结构的序列化 我正在学习C++中的序列化。与以下内容相比,boost::serialization的优势/区别是什么: ifstream_obj.read(reinterpret_cast<char *>(&obj), sizeof(obj)); // read // or ofstream_obj.write(reinterpret_cast<char *>(&obj), sizeof(obj)); // write // ? ifstream_obj.read(reinterpret_cast(&obj),sizeof(obj));//阅读 //或 流对象写入(重新解释强制转换(&obj),大小(obj));//写 // ?,c++,file,serialization,boost,writing,C++,File,Serialization,Boost,Writing,而且,使用哪一个更好?Boost序列化的最大优点是: 它实际上适用于非平凡(POD)数据类型(C++不是C) 它允许您将序列化代码与归档后端分离,从而为您提供文本、xml和二进制序列化 如果您使用适当的归档,您甚至可以具有可移植性(在您的示例中尝试)。这意味着您可以在一台计算机/OS/版本上发送,在另一台计算机上接收,而不会出现问题 最后,它增加了抽象层,这使得事情不那么容易出错。当然,您可以对建议的序列化方法执行相同的操作,而不会产生太多问题 下面是一个答案,它符合您建议的序列化类型,但很

而且,使用哪一个更好?

Boost序列化的最大优点是:

  • 它实际上适用于非平凡(POD)数据类型(C++不是C)
  • 它允许您将序列化代码与归档后端分离,从而为您提供文本、xml和二进制序列化
  • 如果您使用适当的归档,您甚至可以具有可移植性(在您的示例中尝试)。这意味着您可以在一台计算机/OS/版本上发送,在另一台计算机上接收,而不会出现问题
最后,它增加了抽象层,这使得事情不那么容易出错。当然,您可以对建议的序列化方法执行相同的操作,而不会产生太多问题

下面是一个答案,它符合您建议的序列化类型,但很安全:

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


您的示例不适用于包含(非POD)或引用(例如通过指针)其他对象的对象。这在很大程度上取决于数据结构。从本质上讲,这些示例与内存一样糟糕classes@alexj123请参阅迪特尔·吕克提供的第一条评论。@alexj123我刚刚意识到你的“为什么?”问题可能是Dieter Lückk的第一条评论,但我假设这是第二条评论……你是指问题中我的示例(写、读)的优点吗?…@alexj123还有什么?实际上你说的是
boost::serialization
,不是吗?我认为我的例子适用于“小”项目(不做任何特别工作的项目)。我也是。同样,这也回答了你的问题:“我正在研究C++中的序列化。Boosiv::Services的优势与差异是什么?如果与…………相比,就是序列化。”有些情况下,你可能会侥幸逃脱,但一定要确保安全(参见第一个链接答案)