Rumah >pembangunan bahagian belakang >C++ >Bagaimana Boleh Meningkatkan Pensirian Memudahkan Pensirilan Objek C dan Penyahserialisasian?

Bagaimana Boleh Meningkatkan Pensirian Memudahkan Pensirilan Objek C dan Penyahserialisasian?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 07:29:13408semak imbas

How Can Boost Serialization Simplify C   Object Serialization and Deserialization?

Serialization dalam C : Panduan Komprehensif

Serialization ialah proses menterjemah objek ke dalam aliran bait yang boleh disimpan atau dihantar. Ini selalunya berguna untuk menghantar objek melalui rangkaian atau objek berterusan ke storan. Dalam C , terdapat berbilang pendekatan untuk bersiri, salah satu yang paling popular ialah Perpustakaan Boost Serialization.

Boost Serialization

Boost Serialization menyediakan rangka kerja yang berkuasa dan fleksibel untuk serialization dalam C . Ia menyokong siri kedua-dua objek individu dan struktur data yang kompleks, termasuk penunjuk dan kelas terbitan. Untuk menggunakan Boost Serialization, anda mesti mengisytiharkan kelas boleh bersiri terlebih dahulu. Ini melibatkan penentuan kaedah bersiri() yang menentukan cara data objek harus ditulis dan dibaca daripada strim.

#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>

class gps_position {
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive &amp; ar, const unsigned int version) {
        ar &amp; degrees;
        ar &amp; minutes;
        ar &amp; seconds;
    }
    int degrees;
    int minutes;
    float seconds;

public:
    gps_position(){};
    gps_position(int d, int m, float s) :
    degrees(d), minutes(m), seconds(s)
    {}
};

Pensirian dan Penyahserikatan

Dengan kelas yang diisytiharkan, anda kini boleh melaksanakan operasi bersiri dan penyahsirian. Pensirian melibatkan penulisan data objek ke aliran bait.

std::ofstream ofs("filename.dat", std::ios::binary);

// create class instance
const gps_position g(35, 59, 24.567f);

// save data to archive
{
    boost::archive::binary_oarchive oa(ofs);
    // write class instance to archive
    oa << g;
    // archive and stream closed when destructors are called
}

Penyahserikatan ialah proses membina semula objek daripada aliran bait.

std::ifstream ifs("filename.dat", std::ios::binary);

// create class instance to store deserialized object
gps_position g_deserialized;

// read class instance from archive
{
    boost::archive::binary_iarchive ia(ifs);
    ia >> g_deserialized;
    // archive and stream closed when destructors are called
}

Pertimbangan

Selain di atas, Boost Serialization juga menyediakan mekanisme untuk mengendalikan penunjuk, kelas terbitan dan memilih antara binari dan siri teks. Di luar kotak, ia menyokong semua bekas STL.

Atas ialah kandungan terperinci Bagaimana Boleh Meningkatkan Pensirian Memudahkan Pensirilan Objek C dan Penyahserialisasian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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