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中文網其他相關文章!