C++序列化与反序列化代码示例
时间: 2024-09-10 15:00:21 浏览: 53
C++序列化和反序列化
5星 · 资源好评率100%
在C++中,序列化是指将对象的状态信息转换为可以存储或传输的形式的过程,而反序列化则是将存储或传输形式的数据恢复为对象状态的过程。
一个简单的C++序列化与反序列化的代码示例可以使用C++标准库中的iostream和fstream来完成。下面是一个简单的例子,展示了一个Point类的序列化和反序列化过程:
```cpp
#include <iostream>
#include <fstream>
#include <string>
// 一个简单的Point类用于示例
class Point {
public:
int x, y;
Point(int x = 0, int y = 0) : x(x), y(y) {}
// 序列化函数
void serialize(std::ostream& out) {
out.write(reinterpret_cast<const char*>(&x), sizeof(x));
out.write(reinterpret_cast<const char*>(&y), sizeof(y));
}
// 反序列化函数
void deserialize(std::istream& in) {
in.read(reinterpret_cast<char*>(&x), sizeof(x));
in.read(reinterpret_cast<char*>(&y), sizeof(y));
}
};
int main() {
Point p(10, 20);
std::ofstream outFile("point.bin", std::ios::binary);
p.serialize(outFile); // 将p序列化到文件
outFile.close();
Point p2;
std::ifstream inFile("point.bin", std::ios::binary);
p2.deserialize(inFile); // 从文件反序列化p2
std::cout << "Deserialized point: (" << p2.x << ", " << p2.y << ")" << std::endl;
inFile.close();
return 0;
}
```
这段代码首先定义了一个Point类,其中包含了x和y两个成员变量,并提供了serialize和deserialize两个成员函数用于序列化和反序列化。序列化函数将对象的状态写入到一个输出流中,而反序列化函数从输入流中读取状态并恢复对象。
阅读全文