protobuf 如何从字符串中解析枚举?
How does protobuf parse enums from strings?
给出如下原型定义:
enum Foo {
STUFF = 1;
A_THING = 2;
}
...protobuf 能否将以下任何字符串正确解析为值?
- 东西
- 资料
- 东西
- 一件东西
- 一件事
- A_THING
此外,解析器的实现是否因语言而异?
(C++ 中的解析器函数将被命名为 Foo_Parse(const std::string&, Foo*)
;不确定在其他语言中会是什么。)
您的 Foo
的枚举名称解析助手只接受 exact 字符串 "STUFF" 和 "A_THING".
请注意,此名称解析助手只是为您提供的便利功能。这不是 Protobuf 的核心功能。特别是,枚举名称 而不是 使用标准 Protobuf 编码在线发送。明确这一点很重要,因为在谈论 "parsing" 时很容易将其误认为与 Protobuf 有线格式解析有关,而事实并非如此。
由于这只是一个随机助手而不是核心功能,理论上其他语言的实现可以提供实现任意逻辑的助手。您需要查看特定语言的文档。但是,如果有任何语言实现了一个接受与 C++ 不同的字符串的枚举名称解析助手,我会感到有些惊讶。
给出如下原型定义:
enum Foo {
STUFF = 1;
A_THING = 2;
}
...protobuf 能否将以下任何字符串正确解析为值?
- 东西
- 资料
- 东西
- 一件东西
- 一件事
- A_THING
此外,解析器的实现是否因语言而异?
(C++ 中的解析器函数将被命名为 Foo_Parse(const std::string&, Foo*)
;不确定在其他语言中会是什么。)
您的 Foo
的枚举名称解析助手只接受 exact 字符串 "STUFF" 和 "A_THING".
请注意,此名称解析助手只是为您提供的便利功能。这不是 Protobuf 的核心功能。特别是,枚举名称 而不是 使用标准 Protobuf 编码在线发送。明确这一点很重要,因为在谈论 "parsing" 时很容易将其误认为与 Protobuf 有线格式解析有关,而事实并非如此。
由于这只是一个随机助手而不是核心功能,理论上其他语言的实现可以提供实现任意逻辑的助手。您需要查看特定语言的文档。但是,如果有任何语言实现了一个接受与 C++ 不同的字符串的枚举名称解析助手,我会感到有些惊讶。