1007.protobuf序列化string数据遇'\0'截断问题
背景:
使用protobuf在进行序列化的过程 中碰到一个,比较恶心的问题,将xx 对象序列化为 str 时,反序列化,得不到正确的结果。 问题具有一定的偶然性,和xx对象的数据有关,调试好久,才发现问题所在。
解决方案:
sMainFrame 是序列化之后的string对象,大小为sMainFrame.size(); 此时 根据数据的不同, 进行测试会出现 sMainFrame.size() 与 strlen(sMainFrame.c_str()) 大小不一致,我还 以为是序列化不成功,其列化是成功的,不过string中有'\0'字符,这样比较是不合理的。
应该在反序列化处进行处理。具体方法如下: