繁体   English   中英

用于C ++的Python风格的酸洗?

[英]Python-style pickling for C++?

有没有人知道在C ++中进行酸洗的“语言水平”设施? 我不想要像Boost序列化或Google Protocol Buffers这样的东西。 相反,可以自动序列化类的所有成员(可以选择排除某些成员,因为它们不可序列化,或者因为我不想保存它们以供以后使用)。 这可以通过在分析时执行额外操作来完成,这将生成用于处理自动序列化的代码。 有没有人听说过这样的事情?

我不相信在没有运行时内省功能的语言中有任何方法可以做到这一点。

也许xml 数据绑定 gsoap只是众多选择中的一种。 您可以自动生成用于在数据结构和xml架构之间进行映射的代码。 不确定设置它会比你提到的其他选项更容易

可以自动序列化类的所有成员的东西

这在C ++中是不可能的。 Python,C#,Java等。 使用运行时内省来实现这一目标。 你不能用C ++做到这一点,RTTI不够强大。

从本质上讲,C ++语言中没有任何东西可以让某人在运行时发现对象的成员变量。 没有它,您无法自动序列化它们。

有使用<<和>>运算符的标准C ++序列化,虽然你必须为你的每个类实现这些(听起来你不想这样做)。 一些从业者说你应该总是实施这些操作员,当然,我们大多数人很少这样做。

当我需要将结构保存到文件时,我执行此操作的一种快速方法是将我的结构转换为char数组并将其写入文件。 然后,当我想重新加载我的结构时,我将读取整个文件(以二进制模式),并将整个内容转换为我的struct的类型。 足够简单并利用结构存储为内存中的连续块的事实。 不过,我不希望这会与复杂的数据结构或指针一起工作,但需要深思熟虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM