序列化是將物件轉換為可以儲存或傳輸的位元組流的過程。這對於透過網路傳輸物件或將物件持久保存到儲存通常很有用。在 C 中,有多種序列化方法,其中最受歡迎的一種是 Boost 序列化函式庫。
Boost 序列化為 C 中的序列化提供了強大且靈活的框架。它支援單一物件和複雜資料結構(包括指標和衍生類別)的序列化。要使用 Boost Serialization,您必須先聲明可序列化的類別。這涉及定義一個serialize()方法,該方法指定如何從流中寫入和讀取物件的資料。
#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) {} };
聲明類別後,您現在可以執行序列化和反序列化操作。序列化涉及將物件的資料寫入位元組流。
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 }
反序列化是從位元組流重建物件的過程。
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 }
除了上述之外,Boost Serialization 還提供了處理指標、衍生類別以及在二元和文字之間進行選擇的機制序列化。開箱即用,它支援所有 STL 容器。
以上是Boost Serialization 如何簡化 C 物件序列化和反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!