我有一些序列化邏輯,我也序列化stl數據結構。目前我只是通過遍歷它來編寫大小字段,然後寫入結構的每個元素。在反序列化中,我讀取size字段,然後知道何時完成讀取數據結構。是迭代器:: difference_types系統獨立
沒有問題是如何正確編寫大小字段和系統獨立。目前我使用std::iterator_traits<const_iterator>::difference_type
作爲存儲在文件中的類型。但是我不確定,如果這種類型保證獨立於系統,或者可能會改變,當我嘗試在不同系統之間交換文件時。
我看過std::string
這種類型,在這種情況下,sizeof(std::iterator_traits<std::string::const_iterator>::difference_type)
在64位機器上返回8。所以我想在這種情況下,這只是一個size_t
的typedef,它佔用了一個字。我目前沒有可用的32位機器,因此我無法檢查其大小是否與此不同。
這是由標準保證是可移植的,還是我應該使用一些固定類型的所有數據結構來編碼長度?
好吧,我會在這裏使用一個固定大小的類型,以確保它可以跨平臺使用。我已經考慮了字節順序問題,所以我將在這裏使用一個小的無符號整數類型。所有其他類型完全符合簽名和大小,所以這不會是一個問題。 – LiKao