【发布时间】:2014-01-24 23:05:01
【问题描述】:
我有以下结构:
struct ArchiveTableEntry
{
uint32_t id;
char filename[MAX_FILENAME_LEN + 1];
uint32_t filename_crc32;
uint32_t real_data_size;
uint32_t block_data_size;
uint32_t data_crc32;
char data_md5_checksum[16];
uint64_t data_offset;
uint8_t flag;
};
在序列化之后,我有很好的输出到文件。 从文件加载也可以正常工作。 我使用 memcpy 来执行序列化/反序列化,现在我的问题是:How can I replace char filename[MAX_FILENAME_LEN + 1];通过 std::string,并保持序列化/反序列化工作,并保存 char 浪费的未使用字节。 谢谢!
【问题讨论】:
-
struct字段可能是内存对齐填充的基础...使用适当的序列化机制来获得尺寸有效的输出(例如 google protobuf)。
标签: c++ string serialization struct deserialization