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 중국어 웹사이트의 기타 관련 기사를 참조하세요!