C++代码 boost序列化和反序列化
时间: 2023-09-13 09:13:22 浏览: 192
基于boost的序列化与反序列化
Boost 库提供了非常强大的序列化和反序列化功能,可以用来将对象转换为二进制数据,以及从二进制数据还原为对象。以下是一个简单的示例代码,展示了如何使用 Boost 库进行序列化和反序列化:
```cpp
#include <iostream>
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class MyClass {
public:
int x;
std::string name;
// 序列化函数
template<class Archive>
void serialize(Archive & ar, const unsigned int version) {
ar & x;
ar & name;
}
};
int main() {
// 创建对象
MyClass obj;
obj.x = 42;
obj.name = "Boost";
// 序列化对象到文件
std::ofstream ofs("data.txt");
boost::archive::text_oarchive oa(ofs);
oa << obj;
ofs.close();
// 从文件反序列化对象
MyClass restoredObj;
std::ifstream ifs("data.txt");
boost::archive::text_iarchive ia(ifs);
ia >> restoredObj;
ifs.close();
// 输出反序列化后的对象内容
std::cout << "Restored Object: " << std::endl;
std::cout << "x: " << restoredObj.x << std::endl;
std::cout << "name: " << restoredObj.name << std::endl;
return 0;
}
```
在上述代码中,我们定义了一个名为 `MyClass` 的类,并在其中添加了 `serialize` 函数,该函数用于定义对象的序列化方式。我们使用 Boost 库中的 `text_oarchive` 类将对象序列化到文件中,并使用 `text_iarchive` 类从文件中反序列化对象。最后,我们输出反序列化后的对象内容。
请确保在编译时链接了 Boost 库,并将其头文件路径添加到编译器的包含路径中。
阅读全文