C++ 라이브러리 직렬화 및 역직렬화 가이드 직렬화: 출력 스트림을 생성하고 이를 아카이브 형식으로 변환합니다. 객체를 아카이브로 직렬화합니다. 역직렬화: 입력 스트림을 생성하고 이를 아카이브 형식에서 복원합니다. 아카이브에서 객체를 역직렬화합니다. 실제 예: 직렬화: 출력 스트림 생성. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에 직렬화합니다. 역직렬화: 입력 스트림을 생성합니다. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에서 역직렬화합니다.
소개
직렬화 및 역직렬화는 객체를 바이트 스트림으로 변환하고 바이트 스트림에서 객체를 재구성하는 프로세스입니다. C++에서는 함수 라이브러리를 사용하여 이 기능을 구현할 수 있습니다. 이 기사에서는 직렬화 및 역직렬화를 위해 바이너리 아카이브 함수 라이브러리(boost::archive)를 사용하는 방법을 소개합니다.
Serialization
객체를 직렬화하려면 출력 스트림을 생성하고boost::archive::binary_oarchive
클래스를 사용하여 이를 아카이브 형식으로 변환해야 합니다.boost::archive::binary_oarchive
类将其转换为存档格式。
#include// 创建一个输出流 std::ofstream output("myfile.dat"); // 创建一个存档对象 boost::archive::binary_oarchive archive(output); // 将对象序列化到存档中 archive << myObject;
反序列化
要反序列化一个对象,我们需要创建一个输入流并使用boost::archive::binary_iarchive
类将其从存档格式恢复。
#include// 创建一个输入流 std::ifstream input("myfile.dat"); // 创建一个存档对象 boost::archive::binary_iarchive archive(input); // 从存档中反序列化对象 MyObject loadedObject; archive >> loadedObject;
实战案例
假設我們有一個名為Person
的類,它有name
和age
#include// 创建一个输出流 std::ofstream output("person.dat"); // 创建一个存档对象 boost::archive::binary_oarchive archive(output); // 创建一个 Person 对象 Person person("John", 30); // 将 Person 对象序列化到存档中 archive << person;
Deserialization
객체를 deserialize하려면 입력 스트림을 생성하고boost::archive::binary_iarchive
클래스를 사용하여 아카이브 형식에서 복원해야 합니다.
#include// 创建一个输入流 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;
name
및age
라는 두 가지 속성을 갖는Person
이라는 클래스가 있다고 가정해 보겠습니다. 직렬화 및 역직렬화하는 방법은 다음과 같습니다.
John, 30
위 내용은 C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!