【发布时间】:2015-05-21 09:47:00
【问题描述】:
我正在尝试使用 google 协议缓冲区将消息序列化为 C++ 中的字符串,并将序列化结果(其中包含嵌入的空值)分配给 std::string。以下是我的代码:
std::string result = message.SerializeAsString();
忽略第一个 \0 字符之后的字符。结果没有完整的序列化字符串。我尝试了以下明确指定长度的方法。
int size = message.ByteSize();
std::string result(std::string(message.SerializeAsString()), size);
它也不适合我。有没有其他方法可以做到这一点?
提前致谢。
【问题讨论】:
-
cout << result.length();会报告什么? -
这些字符可能不会在
string中被忽略,而是在您用来检查它们的工具中。 -
@RichardHodges 结果的长度为 430。序列化字符串在其第 15 个索引中具有第一个空字符。
标签: c++ serialization null protocol-buffers stdstring