protobuf是Google開發的一個序列化框架,類似XML,JSON,基于二進制,比傳統的XML表示同樣一段內容要短小得多。通過protobuf,可以很輕松的調用相關方法來完成業務數據的序列化與反序列化。protobuf repeated類型相當于std的vector,可以用來存放N個相同類型的內容,文章將簡單介紹protobuf repeated的使用。
首先定義一個protobuf結構,如下:
message Person {
required int32 age = 1;
required string name = 2;
}
message Family {
repeated Person person = 1;
}
下面我們以例子簡單說明如何使用:
int main(int argc, char* argv[])
{
GOOGLE_PROTOBUF_VERIFY_VERSION;
Family family;
Person* person;
// 添加一個家庭成員,John
person = family.add_person();
person->set_age(25);
person->set_name("John");
// 添加一個家庭成員,Lucy
person = family.add_person();
person->set_age(23);
person->set_name("Lucy");
// 添加一個家庭成員,Tony
person = family.add_person();
person->set_age(2);
person->set_name("Tony");
// 顯示所有家庭成員
int size = family.person_size();
cout << "這個家庭有 " << size << " 個成員,如下:" << endl;
for(int i=0; i<size; i++)
{
Person psn = family.person(i);
cout << i+1 << ". " << psn.name() << ", 年齡 " << psn.age() << endl;
}
getchar();
return 0;
}