Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Boost.Serialization Mengendalikan Pensirilan Objek dalam C?

Bagaimanakah Boost.Serialization Mengendalikan Pensirilan Objek dalam C?

DDD
DDDasal
2025-01-03 06:20:39650semak imbas

How Does Boost.Serialization Handle Object Serialization in C  ?

Pensiri Objek dalam C

Pensirian membenarkan untuk menukar objek kepada tatasusunan bait, membolehkan penghantaran dan rekreasinya. C , tidak seperti Java, tidak menawarkan mekanisme yang wujud untuk proses ini. Walau bagaimanapun, perpustakaan seperti Boost menyediakan penyelesaian yang komprehensif.

API penyiaran Boost memudahkan penukaran objek kepada tatasusunan bait. Pertimbangkan coretan kod berikut:

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

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

    int degrees;
    int minutes;
    float seconds;

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

Untuk mensirikan objek, ikuti langkah berikut:

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 adalah serupa:

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

gps_position g;

{
    boost::archive::binary_iarchive ia(ifs);
    ia >> g;
}

Pensirilan Boost menawarkan tawaran yang fleksibel pilihan, termasuk sokongan untuk bersiri penunjuk, kelas terbitan dan mod binari dan teks. Bekas STL juga dikendalikan dengan mudah.

Atas ialah kandungan terperinci Bagaimanakah Boost.Serialization Mengendalikan Pensirilan Objek dalam C?. 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