>  기사  >  백엔드 개발  >  C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까?

C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까?

WBOY
WBOY원래의
2024-04-18 10:06:02417검색

C++ 라이브러리 직렬화 및 역직렬화 가이드 직렬화: 출력 스트림을 생성하고 이를 아카이브 형식으로 변환합니다. 객체를 아카이브로 직렬화합니다. 역직렬화: 입력 스트림을 생성하고 이를 아카이브 형식에서 복원합니다. 아카이브에서 객체를 역직렬화합니다. 실제 예: 직렬화: 출력 스트림 생성. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에 직렬화합니다. 역직렬화: 입력 스트림을 생성합니다. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에서 역직렬화합니다.

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

C++ 라이브러리 직렬화 및 역직렬화 가이드

소개

직렬화 및 역직렬화는 객체를 바이트 스트림으로 변환하고 바이트 스트림에서 객체를 재구성하는 프로세스입니다. C++에서는 함수 라이브러리를 사용하여 이 기능을 구현할 수 있습니다. 이 기사에서는 직렬화 및 역직렬화를 위해 바이너리 아카이브 함수 라이브러리(boost::archive)를 사용하는 방법을 소개합니다.

Serialization

객체를 직렬화하려면 출력 스트림을 생성하고 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;

Deserialization

객체를 deserialize하려면 입력 스트림을 생성하고 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;
실용 사례

nameage라는 두 가지 속성을 갖는 Person이라는 클래스가 있다고 가정해 보겠습니다. 직렬화 및 역직렬화하는 방법은 다음과 같습니다.

🎜Serialization🎜🎜
John, 30
🎜🎜Deserialization🎜🎜rrreee🎜🎜Output🎜🎜rrreee

위 내용은 C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.