【发布时间】:2015-02-27 22:48:34
【问题描述】:
我正在处理内存中的一个缓冲区,该缓冲区被读取为 protobuf。我需要反序列化它。此 protobuf 的内容包含一个字符串,该字符串中可能有也可能没有空字符。例如,字符串可能是这样的:“name\0first”。如果我有这样的输入,我可以反序列化的字符串总是看起来像“name”,因为字符串类删除了空字符之后的部分。
在这种情况下如何访问完整的字符串?字符串长度函数在这种情况下显然没有帮助。
【问题讨论】:
-
你错了——
string::length()函数可以正常工作,即使 std::string 包含 NULL。您需要向我们展示您现在正在做什么来访问或打印该字符串,然后我们可以向您展示如何正确获取该字符串的内容。 -
std::string 可以接受带有嵌入 NUL 字符的字符串。
-
@PaulMcKenzie:我写了一个简单的测试程序:string s("name\0first"); cout
-
@SantanuC 如果您的字符串包含空字符,则必须使用带有长度参数的构造函数。
标签: c++ protobuf-c