我正在尋找一種方法來保存和加載文件中的多種對象,並且可以根據某種唯一標識符以任意特定順序加載它們。我希望每種類型對象的所有實例都存儲在特定的不同文件中(例如class1instances.dat,class2instances.dat等)。保存對象並按任意順序加載
我已經看過Boost Serialization,但它看起來好像它只能加載對象在它保存它們的相同(反向)順序中。我應該嘗試擴展他們的檔案課,還是有一些已經完成的課程,我錯過了?
我正在尋找一種方法來保存和加載文件中的多種對象,並且可以根據某種唯一標識符以任意特定順序加載它們。我希望每種類型對象的所有實例都存儲在特定的不同文件中(例如class1instances.dat,class2instances.dat等)。保存對象並按任意順序加載
我已經看過Boost Serialization,但它看起來好像它只能加載對象在它保存它們的相同(反向)順序中。我應該嘗試擴展他們的檔案課,還是有一些已經完成的課程,我錯過了?
我通過簡單地使用JsonCpp解決了這個問題。最後它是最簡單和最靈活的解決方案。
只要有文件爲每個類,而不是一個「class1instances.dat」和「class1indeces.dat`
第一類是你的對象,另一個後的sequentional文件中。第二個文件是作爲指數中的第一個文件你的對象它包含的第一個文件對象的位置。例如,class1indeces.dat會是什麼樣子:。
0
1235
12343
43455
899432
意味着,第一個目的是在文件「class1instances.dat」的位置0處,第二個對象位於1235等位置,然後你就可以se流查找功能開始閱讀。
另一種索引方法是key-value
。您可以爲每個對象設置一個唯一的ID並寫入每個對象ID及其相應的索引。例如:
0:0
2:1235
1:12343
320:43455
3:899432
例如,要檢索ID爲320的對象,只需在文件中對ID 320進行線性搜索即可。當你找到它時,用它的相應位置開始讀取它的對象直到的下一個位置。
您還可以使用流模式bin
序列化您的對象。 Example。
這聽起來更像是一個數據庫會做什麼。 –
我認爲有時你必須編寫自己的代碼。我會建議某種索引文件放在你的.dat文件中。索引文件將具有唯一標識符和數據文件中每個保存對象的位置。 – john
@BoPersson嗯,我可以將東西保存在同一個文件中,然後將它們全部加載到一個矢量中,然後選擇我想要的那個,但它感覺不對。這樣一個小小的修改是什麼?我不必執行復雜的操作,只需使用特定的ID一次獲取一個項目。 – Svalorzen