Objektserialisierung in C
Serialisierung ermöglicht die Konvertierung von Objekten in ein Byte-Array und ermöglicht so deren Übertragung und Wiederherstellung. C bietet im Gegensatz zu Java keinen inhärenten Mechanismus für diesen Prozess. Bibliotheken wie Boost bieten jedoch eine umfassende Lösung.
Die Boost-Serialisierungs-API erleichtert die Konvertierung von Objekten in Byte-Arrays. Betrachten Sie den folgenden Codeausschnitt:
#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) {} };
Um ein Objekt zu serialisieren, befolgen Sie diese Schritte:
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 }
Deserialisierung ist ähnlich:
std::ifstream ifs("filename.dat", std::ios::binary); gps_position g; { boost::archive::binary_iarchive ia(ifs); ia >> g; }
Boost-Serialisierung bietet Flexibilität Optionen, einschließlich Unterstützung für die Serialisierung von Zeigern, abgeleiteten Klassen sowie Binär- und Textmodi. Auch STL-Container werden mühelos gehandhabt.
Das obige ist der detaillierte Inhalt vonWie geht Boost.Serialization mit der Objektserialisierung in C um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!