ホームページ  >  記事  >  バックエンド開発  >  C++ 関数ライブラリはシリアル化と逆シリアル化をどのように実行しますか?

C++ 関数ライブラリはシリアル化と逆シリアル化をどのように実行しますか?

WBOY
WBOYオリジナル
2024-04-18 10:06:02417ブラウズ

C ライブラリのシリアル化および逆シリアル化ガイド シリアル化: 出力ストリームを作成し、アーカイブ形式に変換します。オブジェクトをシリアル化してアーカイブします。逆シリアル化: 入力ストリームを作成し、アーカイブ形式から復元します。アーカイブからオブジェクトを逆シリアル化します。実践例: シリアル化: 出力ストリームの作成。アーカイブ オブジェクトを作成します。オブジェクトを作成してアーカイブにシリアル化します。逆シリアル化: 入力ストリームを作成します。アーカイブ オブジェクトを作成します。オブジェクトを作成し、アーカイブから逆シリアル化します。

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

C ライブラリのシリアル化と逆シリアル化のガイド

はじめに

シリアル化と逆シリアル化の変換は、次のプロセスです。オブジェクトをバイト ストリームに変換し、バイト ストリームからオブジェクトを再構築します。 C では、関数ライブラリを使用してこの機能を実装できます。この記事では、バイナリ アーカイブ関数ライブラリ (boost::archive) を使用してシリアル化および逆シリアル化する方法を紹介します。

シリアル化

オブジェクトをシリアル化するには、出力ストリームを作成し、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#が含まれているとします。 ## 2 つの属性。これをシリアル化および逆シリアル化する方法は次のとおりです。

#Serialization

#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;

Deserialization

#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;

Output

りー

以上がC++ 関数ライブラリはシリアル化と逆シリアル化をどのように実行しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。