protobuf父子嵌套结构的使用
protobuf作为常用的消息形式,其中数据类型的嵌套使用是不可避免的。大概有两种大类,三种形式将子结构赋值到父结构中。
如下:
//第一类:
syntax = "proto3";
package test;
message data {
string content = 1;
int32 age=2;
bool isOld=3;
}
message person_message
{
data info_data=1;
}
//第二类:
syntax = "proto3";
package test;
message data {
string content = 1;
int32 age=2;
bool isOld=3;
}
message person_message
{
repeated ata info_data=1;
}第一类中有两种赋值方式:
//方式1
peron_message person;
//子结构赋值
data *pData;
pData->set_content("nihao");
pData->set_age(12);
pData->set_isOld(10);
//装载到父结构中
person.set_allocated_data(pData);
//方式2
peron_message person;
//子结构赋值
data Data;
Data.set_content("nihao");
Data.set_age(12);
Data.set_isOld(10);
person.mutable_data().CopyFrom(Data);第二类的赋值方式如下:
//
person_message person;
data* pData=person.add_data();
pData->set_content("nihao");
pData->set_age(12);
pData->set_isOld(10);
本着自己申请的内存自己释放的原则,set_allocated的方法不太好,帮助释放了内存。
页:
[1]