Sirikan Kelas dengan Ahli Jenis Data Tersuai dalam C
Masalah:
Bagaimanakah anda dengan cekap mensiri dan menyahsiri kelas yang mengandungi berbilang ahli jenis data tersuai?
Jawapan:
Untuk mensiri dan menyahsiri kelas yang mengandungi jenis data tersuai dengan cekap, pertimbangkan perkara berikut :
Cadangan Antara Muka:
<code class="cpp">std::vector<uint8_t> serialize(Mango const& Man); Mango deserialize(std::span<uint8_t const>> data);</code>
Pelaksanaan:
<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>
Penghurai dan Jenis Data Tersuai Penjana:
Ini mengendalikan siri/penyahserialisasi jenis data tersuai anda (lihat jawapan untuk contoh terperinci).
Kemudahalihan:
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri Kelas dengan Ahli Jenis Data Tersuai dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!