C 中的物件序列化
序列化允許將物件轉換為位元組數組,從而實現它們的傳輸和重新建立。與 Java 不同,C 不會為此過程提供固有機制。然而,Boost 等函式庫提供了全面的解決方案。
Boost 序列化 API 有助於將物件轉換為位元組陣列。考慮以下程式碼片段:
#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 °rees; 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) {} };
要序列化對象,請依照以下步驟:
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); gps_position g; { boost::archive::binary_iarchive ia(ifs); ia >> g; }
Boost 序列化提供靈活的選項,包括對指標序列化、衍生類別以及二進位和文字模式的支援。 STL 容器也可以輕鬆處理。
以上是Boost.Serialization 如何處理 C 中的物件序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!