Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mensiri dan Menyahseri Kelas dengan Ahli Jenis Data Tersuai dalam C?

Bagaimana untuk Mensiri dan Menyahseri Kelas dengan Ahli Jenis Data Tersuai dalam C?

Mary-Kate Olsen
Lepaskan: 2024-10-31 21:18:02
asal
184 orang telah melayarinya

How to Serialize and Deserialize Classes with Custom Data Type Members in C  ?

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&amp; Man);
Mango                deserialize(std::span<uint8_t const>> data);</code>
Salin selepas log masuk

Pelaksanaan:

<code class="cpp">std::vector<uint8_t> serialize(Mango const&amp; 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&amp; os, Mango const&amp; Man)  {
    do_generate(std::ostreambuf_iterator<char>(os), Man);
}

void deserialize(std::istream&amp; is, Mango&amp; Man) {
    Man = {}; // clear it!
    std::istreambuf_iterator<char> f(is), l{};
    if (!do_parse(f, l, Man))
        throw std::runtime_error("deserialize");
}</code>
Salin selepas log masuk

Penghurai dan Jenis Data Tersuai Penjana:

Ini mengendalikan siri/penyahserialisasi jenis data tersuai anda (lihat jawapan untuk contoh terperinci).

Kemudahalihan:

  • Pastikan endianness konsisten jika perlu.
  • Pertimbangkan untuk menggunakan Boost Endian (header sahaja) untuk menormalkan endianness merentas platform.

Nota Tambahan:

  • Jenis data tersuai mesti boleh disalin secara remeh untuk penyirian yang cekap.
  • Elakkan menggunakan pensirilan rangsangan secara langsung kerana ia memerlukan pemautan.
  • Pertimbangkan untuk menggunakan pembantu pengepala sahaja yang disyorkan berfungsi untuk fleksibiliti dan kecekapan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan