목표는 C 클래스를 직렬화 및 역직렬화하는 것입니다. 사용자 정의 데이터 유형의 멤버를 포함하는 Mango.
권장 구현에는 다음 기능이 포함됩니다.
<code class="cpp">std::vector<uint8_t> serialize(Mango const& Man); Mango deserialize(std::span<uint8_t const> data); void serialize_to_stream(std::ostream& os, Mango const& Man); void deserialize(std::istream& is, Mango& Man);</code>
사용자 정의 모든 관련 유형(ValType, FuntionMango, MangoType 및 Mango 포함)에 필요합니다.
<code class="cpp">// Define `do_generate` and `do_parse` functions // for custom data types.</code>
<code class="cpp">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>
실제 예:
https://coliru.stacked-crooked.com/a/288829ec964a3ca9
위 내용은 사용자 정의 데이터 유형을 사용하여 C 클래스를 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!