La sérialisation est le processus de traduction d'un objet en un flux d'octets pouvant être stocké ou transmis. Ceci est souvent utile pour transmettre des objets sur un réseau ou pour conserver des objets vers le stockage. En C , il existe plusieurs approches de sérialisation, l'une des plus populaires étant la bibliothèque de sérialisation Boost.
Boost Serialization fournit un cadre puissant et flexible pour la sérialisation en C . Il prend en charge la sérialisation d'objets individuels et de structures de données complexes, notamment des pointeurs et des classes dérivées. Pour utiliser Boost Serialization, vous devez d'abord déclarer les classes sérialisables. Cela implique de définir une méthode serialize() qui spécifie comment les données de l'objet doivent être écrites et lues à partir d'un flux.
#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) {} };
Avec la classe déclarée, vous pouvez maintenant effectuer opérations de sérialisation et de désérialisation. La sérialisation implique l'écriture des données de l'objet dans un flux d'octets.
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 }
La désérialisation est le processus de reconstruction d'un objet à partir d'un flux d'octets.
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 }
En plus de ce qui précède, Boost Serialization fournit également des mécanismes pour gérer les pointeurs, les classes dérivées et choisir entre la sérialisation binaire et texte. Prêt à l'emploi, il prend en charge tous les conteneurs STL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!