Sérialisation d'objets en C
La sérialisation permet de convertir des objets en un tableau d'octets, permettant leur transmission et leur recréation. C , contrairement à Java, n'offre pas de mécanisme inhérent pour ce processus. Cependant, des bibliothèques telles que Boost offrent une solution complète.
L'API de sérialisation Boost facilite la conversion d'objets en tableaux d'octets. Considérez l'extrait de code suivant :
#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) {} };
Pour sérialiser un objet, suivez ces étapes :
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 similaire :
std::ifstream ifs("filename.dat", std::ios::binary); gps_position g; { boost::archive::binary_iarchive ia(ifs); ia >> g; }
La sérialisation Boost offre une flexibilité options, y compris la prise en charge de la sérialisation des pointeurs, des classes dérivées et des modes binaire et texte. Les conteneurs STL sont également manipulés sans effort.
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!