有一个被pb协议转为Srring的repeated字段数据,如何把这个String转回repeated字段的list
时间: 2023-04-10 20:03:46 浏览: 165
pandas DataFrame数据转为list的方法
5星 · 资源好评率100%
可以使用protobuf库中的ParseFromString方法将String转换为protobuf消息对象,然后再通过反射获取repeated字段的值。具体代码如下:
```
// 定义protobuf消息类型
message MyMessage {
repeated int32 my_field = 1;
}
// 将protobuf消息对象转换为String
MyMessage message;
message.add_my_field(1);
message.add_my_field(2);
std::string str;
message.SerializeToString(&str);
// 将String转换为protobuf消息对象
MyMessage new_message;
new_message.ParseFromString(str);
// 获取repeated字段的值
const google::protobuf::Reflection* reflection = new_message.GetReflection();
const google::protobuf::FieldDescriptor* field = new_message.GetDescriptor()->FindFieldByName("my_field");
int size = reflection->FieldSize(new_message, field);
for (int i = 0; i < size; i++) {
int32_t value = reflection->GetRepeatedInt32(new_message, field, i);
std::cout << value << std::endl;
}
```
阅读全文