protobuf如何解析字符串中的枚举?

时间:2015-08-12 21:11:41

标签: enums protocol-buffers

给出一个原型定义:

enum Foo {
    STUFF = 1;
    A_THING = 2;
}

... protobuf会将以下任何字符串正确解析为值吗?

  • STUFF
  • 东西
  • 东西
  • AThing
  • aThing
  • A_THING

此外,解析器实现是否因语言而异?

(C ++中的解析器函数名为Foo_Parse(const std::string&, Foo*);不确定它在其他语言中的含义。)

1 个答案:

答案 0 :(得分:1)

Foo的枚举名称解析帮助程序只接受完全字符串“STUFF”和“A_THING”。

请注意,此名称解析帮助程序只是一个方便的功能。这不是核心Protobuf功能。特别是,使用标准Protobuf编码在线路上发送枚举名称​​ not 。重要的是要明确这一点,因为在讨论“解析”时很容易将其误认为与Protobuf线程格式解析有关,但事实并非如此。

由于这只是一个随机助手而不是核心功能,因此其他语言的实现理论上可以提供实现任意逻辑的助手。您需要查看特定语言的文档。但是,如果任何语言实现了一个枚举名称解析帮助程序,接受了与C ++不同的字符串,我会感到有些惊讶。