C 中具有自定义数据类型成员的类的序列化
问题:
如何您可以有效地序列化和反序列化包含多个自定义数据类型成员的类吗?
答案:
要有效地序列化和反序列化包含自定义数据类型的类,请考虑以下事项:
建议接口:
<code class="cpp">std::vector<uint8_t> serialize(Mango const& Man); Mango deserialize(std::span<uint8_t const>> data);</code>
实现:
<code class="cpp">std::vector<uint8_t> serialize(Mango const& Man) { std::vector<uint8_t> bytes; do_generate(back_inserter(bytes), Man); return bytes; } Mango deserialize(std::span<uint8_t const> data) { Mango result; auto f = begin(data), l = end(data); if (!do_parse(f, l, result)) throw std::runtime_error("deserialize"); return result; } void serialize_to_stream(std::ostream& os, Mango const& Man) { do_generate(std::ostreambuf_iterator<char>(os), Man); } void deserialize(std::istream& is, Mango& Man) { Man = {}; // clear it! std::istreambuf_iterator<char> f(is), l{}; if (!do_parse(f, l, Man)) throw std::runtime_error("deserialize"); }</code>
自定义数据类型解析器和生成器:
它们处理自定义数据类型的序列化/反序列化(有关详细示例,请参阅答案)。
可移植性:
附加说明:
以上是如何在 C 中序列化和反序列化具有自定义数据类型成员的类?的详细内容。更多信息请关注PHP中文网其他相关文章!