我正在尝试了解在C++中如何在不使用库的情况下进行序列化/反序列化。我从简单的对象开始,但是当反序列化向量时,我发现在没有先写入其大小的情况下无法获取该向量。此外,我不知道应该选择哪种文件格式,因为如果在向量大小之前存在数字,则我无法正确读取它。此外,我想要对类和映射容器执行此操作。我的任务是对像这样的对象进行序列化/反序列化:
PersonInfo
{
unsigned int age_;
string name_;
enum { undef, man, woman } sex_;
}
Person : PersonInfo
{
vector<Person> children_;
map<string, PersonInfo> addrBook_;
}
目前我知道如何序列化像这样的简单对象:
vector<PersonInfo> vecPersonInfo;
vecPersonInfo.push_back(*personInfo);
vecPersonInfo.push_back(*oneMorePersonInfo);
ofstream file("file", ios::out | ios::binary);
if (!file) {
cout<<"can not open file";
} else {
vector<PersonInfo>::const_iterator iterator = vecPersonInfo.begin();
for (; iterator != vecPersonInfo.end(); iterator++) {
file<<*iterator;
}
能否请您建议一下,如何对这个复杂对象进行操作,或者有没有讲解清晰的好教程可以参考?