将google :: protobuf :: RepeatedField <float>转换为float

时间:2015-09-30 19:39:55

标签: c++ protocol-buffers

我正在使用Google的Protobuf创建一个名为Foo的C ++类,如下所示:

message Foo
{
    optional int32 x = 1;
    repeated float y = 2;
}

在创建的C ++类中,这将创建类型为y的成员变量const google::protobuf::RepeatedField<float>。现在,在我的C ++代码中,我想要访问名为x的{​​{1}}实例的yFoo变量。在此示例中,foo的长度为1,即它包含一个浮点数:

y

这里,第一行有效,但第二行和第三行都出错。我只是想获取存储在int a = foo.x(); float b = foo.y(); float c = foo.y()[0];

中的浮动值

我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

你想:

float b = foo.y(0);

(堆栈溢出正在抱怨我的答案是简短......)

答案 1 :(得分:0)

你可以迭代你的Y-s

for(auto value : Foo.y())
{
    //do something with value here
}