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 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 & ar, const unsigned int version) { ar & degrees; ar & minutes; ar & seconds; } int degrees; int minutes; float seconds; public: gps_position(){}; gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) {} };
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 }
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!