一、对于同一段数据,有些情况需要重复利用,并赋予对应的值。比如,需要一个班级所有人的姓名和年龄,在Google protocol buffer数据中,repeated方法可以重复利用姓名和年龄这两个定义的数据。下面举例说明。
二、proto文件如下所示:
message person
{
required string name=1;
optional int32 age=2;
}
message persons
{
repeated person p=1;
}
三、在QT creator中的程序如下:
#include"test_person.pb.h"
using namespace std;
#include"iostream"
int main()
{
persons ps;
person *p1=ps.add_p();//添加第一个人
p1->set_age(18);
p1->set_name("djx");
person *p2=ps.add_p();//添加第二个人
p2->set_age(19);
p2->set_name("tony");
string str;
ps.SerializeToString(&str);//将repeated结构中的两个人的信息序列化
persons ps1;
ps1.ParseFromString(str);//反序列化
const person& per1=ps.p(0);//取第一个人
cout<<"name:"<<per1.name()<<endl;
cout<<"age:"<<per1.age()<<endl;
const person& per2=ps.p(1);//取第二个人
cout<<"name:"<<per2.name()<<endl;
cout<<"age:"<<per2.age()<<endl;
}
三、程序执行结构如下: