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中文網其他相關文章!