C++序列化和反序列化
时间: 2023-10-29 12:06:46 浏览: 167
C++中的序列化和反序列化可以通过将对象转换为二进制数据流来实现。序列化是将对象转换为二进制数据流的过程,而反序列化则是将二进制数据流转换回对象的过程。在C++中,可以使用标准库中的iostream和fstream来进行序列化和反序列化操作。
具体实现方法如下:
1. 序列化:将对象转换为二进制数据流
首先需要定义一个结构体或类,用于存储需要序列化的数据。然后使用ofstream将数据写入文件中,或者使用ostringstream将数据写入字符串中。具体实现方法如下:
```c++
struct Person {
std::string name;
int age;
double height;
};
void serialize(const Person& p, std::ostream& os) {
os.write(p.name.c_str(), p.name.size() + 1);
os.write(reinterpret_cast<const char*>(&p.age), sizeof(p.age));
os.write(reinterpret_cast<const char*>(&p.height), sizeof(p.height));
}
```
2. 反序列化:将二进制数据流转换为对象
反序列化需要读取二进制数据流,并将其转换为对应的结构体或类。具体实现方法如下:
```c++
void deserialize(Person& p, std::istream& is) {
std::getline(is, p.name, '\0');
is.read(reinterpret_cast<char*>(&p.age), sizeof(p.age));
is.read(reinterpret_cast<char*>(&p.height), sizeof(p.height));
}
```
阅读全文