我期待在每次重新啓動我的程序期間使我的數據可用。我很好奇這是存儲文件的最佳方式,而不是回讀程序。我一直在閱讀互聯網上的一些東西,最大的問題是XML或二進制格式?我仍然在學習C++,我不掌握它。該程序的對象類型爲string
int
int
...您使用哪種方法重新使用,爲什麼?將類對象的C++向量寫入文件返回程序
還有一件事是否有人知道這個to binary
或to XML
的好教程?
對不起缺少代碼部分,但我想知道一些比我更高級的程序員的意見。 :P
我期待在每次重新啓動我的程序期間使我的數據可用。我很好奇這是存儲文件的最佳方式,而不是回讀程序。我一直在閱讀互聯網上的一些東西,最大的問題是XML或二進制格式?我仍然在學習C++,我不掌握它。該程序的對象類型爲string
int
int
...您使用哪種方法重新使用,爲什麼?將類對象的C++向量寫入文件返回程序
還有一件事是否有人知道這個to binary
或to XML
的好教程?
對不起缺少代碼部分,但我想知道一些比我更高級的程序員的意見。 :P
已經討論除了Matthais評論:
我覺得最明顯的格式是正確的,你的情況,那就是純文本。
只需以純文本格式(通常由空格分隔)序列化您的數據。 PT的好處在於它是人類可讀的,人爲可修改的,易於使用流處理(>>標記化或增強標記器)並且靈活且比XML輕得多。
例如,您可能希望存儲
struct {
std::string name;
int age;
double height;
};
你,你會這樣寫:
John 21 5.4
Bill 31 4.9
或任何有你。這始終是無限便捷,例如名稱可以包含兩個詞如此:
John Smith
而且tokeniser將劈在空間和嘗試,並解析史密斯爲int,但是這是一個簡單的問題,用分隔符來解決。例如「」
你可以告訴我C++中的函數/庫嗎? –
Boost.Tokenizer。 HTTP://www.boost。org/doc/libs/1_49_0/libs/tokenizer/index.html – 111111
純文本的缺點是1)必須編寫解析器,2)稍後難以擴展,3)錯誤恢復更困難。 –
即使您的進程過早死亡(例如由於斷電,硬件故障或代碼本身內的嚴重錯誤),您是否仍需要強健的行爲?
如果是這樣,請考慮「嵌入」數據庫,如SQLite或MS SQL Server Compact(等)。這些系統的交易性質應確保您不會因損壞的數據而導致數據丟失,從而導致您的程序無法正常啓動。另外,某些文件系統支持事務(例如Windows Vista或更高版本中的事務性NTFS)。
這看起來令人滿意,但複雜度比我預期的要高一些。我在Python中使用了Json。我不知道它是爲C++還謝謝你通知我。 :) –
我想說的是,「我需要處理的數據遠遠多於合理安裝在內存中的數據,並且需要進行大量的交叉引用」是使用數據庫比「穩健性」更好的理由。 –
@MikeDeSimone所有這些都是一般的正當理由,但這個問題的措辭表明,在這種特殊情況下,「交叉引用」的大小和需要都不成問題。我也提到了交易文件系統。 –
你在說什麼是「對象持久性」。搜索這些條款,你可能會發現一些有用的東西。但一般來說,業界傾向於使用XML,JSON或YAML等非二進制格式,因爲它們可以進行編輯,而且它們沒有平臺二進制依賴性,例如「int」大小或字節順序。 –