小编Dan*_*nia的帖子

c ++ protobuf:如何遍历消息字段?

我是protobuf的新手,我遇到了简单的任务:我需要遍历消息字段并检查它的类型.如果type是message,我将以递归方式为此消息执行相同操作.

例如,我有这样的消息:

package MyTool;

message Configuration {
    required GloablSettings         globalSettings  = 1;
    optional string                 option1         = 2;
    optional int32                  option2         = 3;
    optional bool                   option3         = 4;

}

message GloablSettings {
    required bool                   option1         = 1;
    required bool                   option2         = 2;
    required bool                   option3         = 3;
}
Run Code Online (Sandbox Code Playgroud)

现在,要在C++中显式访问字段值,我可以这样做:

MyTool::Configuration config;
fstream input("config", ios::in | ios::binary);
config.ParseFromIstream(&input);

bool option1val = config.globalSettings().option1();
bool option2val = config.globalSettings().option2();
Run Code Online (Sandbox Code Playgroud)

等等.当有大量字段时,这种方法不方便.

我可以通过迭代执行此操作并获取字段的名称和类型吗?我知道有类型的描述符,有些叫反射,但我的尝试没有成功.有人可以给我一些代码示例吗?

谢谢!

c++ iteration protocols protocol-buffers

15
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

iteration ×1

protocol-buffers ×1

protocols ×1