【发布时间】:2012-09-12 00:34:12
【问题描述】:
我想实现一个序列化类,它接收一个对象并将其转换为二进制流并存储在一个文件中。稍后,应该从文件中重建对象。
虽然这个功能是由 C# 中的 BinaryFormatter 提供的,但我想设计我的 从头开始拥有自己的序列化类。
有人可以指出一些资源吗?
提前致谢
【问题讨论】:
-
你想支持版本控制之类的东西吗?
-
你不能。 C++ 中没有自省(也称为反射)。此工具允许创建通用序列化程序对象。没有它,您必须为每个要序列化的类添加序列化代码。
-
C++高级序列化系统的例子可以参考boost序列化库。
-
不是很二进制,但有一个很大的讨论:stackoverflow.com/questions/1809670/… 本质上,没有直接的方法。要么使用模板魔法并自己编写一些类布局,然后 C++ 编译器将模板展开以保存/加载,要么使用代码生成器为每个类编写保存/加载代码。
-
C# 建立在 dotnet 之上,具有出色的反射和代码注释功能,这使得各种(反)序列化任务变得更加简单。尝试这样做是 C++ 中的一种通用方式,将会非常复杂。
标签: c++ serialization marshalling deserialization unmarshalling