首頁  >  文章  >  後端開發  >  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 兩個屬性。以下是如何對其進行序列化和反序列化的:

序列化

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

反序列化

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

輸出

John, 30

以上是C++ 函式庫如何進行序列化與反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn