我試圖建立一個持久化模塊,我想在序列化/反序列化我需要對文件進行持久化的類。 Boost序列化可以將多個對象寫入同一個文件嗎?我怎樣才能讀取或循環通過文件中的entrys?如果一個良好的性能是一個條件,Google協議緩衝區可能會對我更好?Boost序列化多個對象
4
A
回答
4
如果序列化庫無法序列化多個對象,序列化庫將不會非常有用。如果你閱讀他們的very extensive documentation,你可以找到所有的答案。
0
我正在學習boost,我認爲你可以使用boost序列化作爲日誌文件,並使用你的邏輯繼續添加值。我面臨同樣的問題,如果我沒看錯你的代碼是這樣的:
#include <iostream>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
int main() {
int two=2;
for(int i=0;i<10;i++) {
std::ofstream ofs("table.txt");
boost::archive::text_oarchive om(ofs);
om << two;
two = two+30;
std::cout<<"\n"<<two;
}
return 0;
}
這裏當您關閉括號(循環的大括號),序列化文件關閉。您可能會看到只寫在table.txt一個值,如果要存儲多個值,你的代碼應該是這樣的:
#include <iostream>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
int main() {
int two=2;
{
std::ofstream ofs("table.txt");
boost::archive::text_oarchive om(ofs);
for(int i=0;i<10;i++) {
om << two;
two = two+30;
std::cout<<"\n"<<two;
}
}
return 0;
}
在這裏你可以看到,在大括號包圍的boost ::系列化:: text_oarchive僅在我完成邏輯結果的序列化時關閉。
相關問題
- 1. 序列化多個對象
- 2. JSON反序列化:多個對象中
- 3. 增強序列化多個對象
- 4. 反序列化多個Java對象
- 5. 序列化和反序列化多個對象
- 6. 序列化一個對象和反序列化爲對象
- 7. 序列化單個對象?
- 8. 序列化/反序列化大對象單次Vs多次序列化/反序列化小對象?
- 9. Boost序列化 - 序列化不可複製但可移動的對象?
- 10. 派生對象的boost序列化不調用派生的序列化()
- 11. boost multi_index_container序列化
- 12. mpfr_float boost序列化
- 13. 單個文件中多個java對象的序列化和反序列化
- 14. 對象序列化
- 15. 對象序列化
- 16. 序列化對象
- 17. 對象序列化
- 18. boost C++序列化/反序列化
- 19. Boost序列化 - 序列化std :: tr1 :: shared_ptr?
- 20. Boost反序列化優化?
- 21. 反序列化序列化對象
- 22. XML序列化:對象未序列化
- 23. 序列化多態對象的
- 24. 使用boost :: serialization序列化對象映射到xml
- 25. 如何使用Boost序列化更新對象?
- 26. 使用boost :: posix_time :: ptime序列化XML表示創建Java對象
- 27. Boost MPL爲對象序列化生成代碼?
- 28. 如何使用boost序列化與shared_ptr成員的對象
- 29. 序列化對象列表
- 30. 序列化對象列表
是的,我讀過它,但如果你看到文檔,所有的例子都只對同一個文件寫入一個,後來他們閱讀這個條目。但是沒有關於在同一個文件中循環對象的例子,或者在位置X的文件中獲得對象序列化的例子。是嗎? – opernas 2010-10-06 09:55:44
由於庫可以序列化數組和標準容器,通常不需要循環自己。我不認爲你可以從隨機位置讀取文件,序列化庫依次工作,按順序編寫所有對象,然後按相同的順序讀取它們。 – 2010-10-06 10:10:02