Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan?
Pensirian dan Penyahserikatan Perpustakaan C++ Pensirilan: Cipta strim output dan tukarkannya kepada format arkib. Mensiri objek ke dalam arkib. Penyahserialisasian: Mencipta aliran input dan memulihkannya daripada format arkib. Nyahserialisasi objek daripada arkib. Contoh praktikal: Serialisasi: Mencipta aliran keluaran. Buat objek arkib. Cipta dan sirikan objek ke dalam arkib. Penyahserialisasian: Buat aliran input. Buat objek arkib. Cipta objek dan deserialisasikannya daripada arkib.
Pengenalan
Pensirilan dan penyahsiriran ialah proses menukar objek kepada aliran bait dan membina semula objek daripada aliran bait. Dalam C++, anda boleh menggunakan perpustakaan fungsi untuk melaksanakan fungsi ini. Artikel ini akan memperkenalkan cara menggunakan pustaka fungsi arkib binari (boost::archive) untuk penyirian dan penyahsiran.
Serialization
Untuk mensirikan objek, kita perlu mencipta aliran output dan menukarnya kepada format arkib menggunakan kelas 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
的類,它有 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;
Deserialisasi
Untuk menyahsiri objek, kita perlu mencipta aliran input dan memulihkannya daripada format arkib menggunakan kelasboost::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;Kes praktikal
Katakan kita mempunyai kelas bernama
John, 30🎜🎜Deserialization🎜🎜rrreee🎜🎜Output🎜🎜rrreee
Atas ialah kandungan terperinci Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!