common.proto
package swartz;
message header
{
required string name = 1;
required int32 id = 2; // Unique ID number for this person.
optional string email = 3;
}
person.proto
package swartz;
import "common.proto";
message Person
{
required header head = 1;
enum PhoneType
{
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber
{
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 2;
}
main.cpp
#include <iostream>
#include <string>
using namespace std;
#include "common.pb.h"
#include "person.pb.h"
int main()
{
string strMsg;
{
swartz::Person people;
swartz::header* phead = people.mutable_head();
phead->set_email("swartz_lubel@outlook.com");
phead->set_name("swartz");
phead->set_id(1);
swartz::Person_PhoneNumber* phoneNumber1 = people.add_phone();
phoneNumber1->set_number("123");
phoneNumber1->set_type(swartz::Person_PhoneType_HOME);
swartz::Person_PhoneNumber* phoneNumber2 = people.add_phone();
phoneNumber2->set_number("456");
phoneNumber2->set_type(swartz::Person_PhoneType_MOBILE);
people.SerializeToString(&strMsg);
}
{
swartz::Person people;
people.ParseFromString(strMsg);
int id = people.head().id();
string strname = people.head().name();
bool bemail = people.head().has_email();
string stremail;
if (bemail)
{
stremail = people.head().email();
}
for (int i = 0; i < people.phone_size();i++)
{
swartz::Person_PhoneNumber phoneNumber1 = people.phone(i);
string strnumber= phoneNumber1.number();
swartz::Person_PhoneType phonetype = phoneNumber1.type();
}
}
getchar();
return 0;
}