Guide de sérialisation et de désérialisation de la bibliothèque C++ Sérialisation : créez un flux de sortie et convertissez-le en format d'archive. Sérialisez les objets dans l'archive. Désérialisation : crée un flux d'entrée et le restaure à partir du format d'archive. Désérialisez les objets de l'archive. Exemple pratique : Sérialisation : Création d'un flux de sortie. Créez un objet d'archive. Créez et sérialisez des objets dans l'archive. Désérialisation : créez un flux d'entrée. Créez un objet d'archive. Créez des objets et désérialisez-les à partir de l'archive.
Introduction
La sérialisation et la désérialisation sont le processus de conversion d'objets en flux d'octets et de reconstruction d'objets à partir de flux d'octets. En C++, vous pouvez utiliser des bibliothèques de fonctions pour implémenter cette fonctionnalité. Cet article explique comment utiliser la bibliothèque de fonctions d'archive binaire (boost :: archive) pour la sérialisation et la désérialisation.
Sérialisation
Afin de sérialiser un objet, nous devons créer un flux de sortie et le convertir au format d'archive à l'aide de la classe boost::archive::binary_oarchive
. boost::archive::binary_oarchive
类将其转换为存档格式。
#include <boost/archive/binary_oarchive.hpp> // 创建一个输出流 std::ofstream output("myfile.dat"); // 创建一个存档对象 boost::archive::binary_oarchive archive(output); // 将对象序列化到存档中 archive << myObject;
反序列化
要反序列化一个对象,我们需要创建一个输入流并使用 boost::archive::binary_iarchive
类将其从存档格式恢复。
#include <boost/archive/binary_iarchive.hpp> // 创建一个输入流 std::ifstream input("myfile.dat"); // 创建一个存档对象 boost::archive::binary_iarchive archive(input); // 从存档中反序列化对象 MyObject loadedObject; archive >> loadedObject;
实战案例
假設我們有一個名為 Person
的類,它有 name
和 age
#include <boost/archive/binary_oarchive.hpp> // 创建一个输出流 std::ofstream output("person.dat"); // 创建一个存档对象 boost::archive::binary_oarchive archive(output); // 创建一个 Person 对象 Person person("John", 30); // 将 Person 对象序列化到存档中 archive << person;
Désérialisation
Pour désérialiser un objet, nous devons créer un flux d'entrée et le restaurer à partir du format d'archive en utilisant la classeboost::archive::binary_iarchive
. #include <boost/archive/binary_iarchive.hpp> // 创建一个输入流 std::ifstream input("person.dat"); // 创建一个存档对象 boost::archive::binary_iarchive archive(input); // 创建一个 Person 对象 Person loadedPerson; // 从存档中反序列化 Person 对象 archive >> loadedPerson; std::cout << loadedPerson.getName() << ", " << loadedPerson.getAge() << std::endl;
Supposons que nous ayons une classe nommée Person
, qui a deux attributs : name
et age
. Voici comment le sérialiser et le désérialiser :
John, 30
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!