我正在寻找一种方法来保存和加载文件上的几种对象,并能够根据某种唯一标识符以任何特定顺序加载它们。我希望每种类型对象的所有实例都存储在一个特定的不同文件中(例如class1instances.dat,class2instances.dat等)。
我看过Boost Serialization但看起来它似乎只能以保存它们的相同(反向)顺序加载对象。我是否应该尝试扩展他们的Archive类,或者是否已经完成了某些事情并且我错过了它?
答案 0 :(得分:1)
每个类只有两个文件,而不是一个:“class1instances.dat”和“class1indeces.dat`。
第一个类是对象的顺序文件,一个接一个。第二个文件用作第一个文件中对象的索引。它包含第一个文件中对象的位置。例如,class1indeces.dat看起来像:
0
1235
12343
43455
899432
表示第一个对象位于文件“class1instances.dat”的第0位。第二个对象位于1235位,依此类推。然后使用流搜索功能开始阅读。
另一种索引方法是key-value
。您可以为每个对象拥有唯一的ID,并写入每个对象ID及其相应的索引。例如:
0:0
2:1235
1:12343
320:43455
3:899432
例如,要检索ID = 320的对象,只需在文件中对ID 320进行线性搜索。找到它后,使用相应的位置开始从中读取对象,直到下一个位置。
您还可以使用流bin
模式来序列化对象。 Example
答案 1 :(得分:0)
我通过简单地使用JsonCpp解决了这个问题。最后,它是最简单,最灵活的解决方案。