Maison  >  Article  >  développement back-end  >  Comment la bibliothèque de fonctions C++ effectue-t-elle la sérialisation et la désérialisation ?

Comment la bibliothèque de fonctions C++ effectue-t-elle la sérialisation et la désérialisation ?

WBOY
WBOYoriginal
2024-04-18 10:06:02417parcourir

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.

C++ 函数库如何进行序列化和反序列化?

Guide de sérialisation et de désérialisation de la bibliothèque C++

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 的類,它有 nameage

#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 classe boost::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;
Cas pratique

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 :

🎜Sérialisation🎜🎜
John, 30
🎜🎜Désérialisation🎜🎜rrreee🎜🎜Sortie🎜🎜rrreee

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn