我有一些序列化逻辑,我也序列化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