1 介绍
Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler.
addrbook.proto
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
protoc.exe -I=./ --cpp_out=./ ./addrbook.proto
生成文件:addrbook.pb.cc addrbook.pb.h
(依赖库:libprotoc.lib;libprotobuf.lib
Person person;
person.set_id(10);
person.set_name("protobuf");
person.set_email("[email protected]");
Person::PhoneNumber* phone_num1 = person.add_phone();
phone_num1->set_number("12345678");
phone_num1->set_type(Person_PhoneType::Person_PhoneType_MOBILE);
Person::PhoneNumber* phone_num2 = person.add_phone();
phone_num2->set_number("123456780");
std::string ouput;
size_t size = person.ByteSize();
person.SerializeToString(&ouput);
/* 使用string做需要的操作 */
Person person;
person.ParseFromString(in);
std::string name = person.name();
int id = person.id();
std::string email = person.email();
int num = person.phone_size();
Person::PhoneNumber* phone = new Person::PhoneNumber[num];
for (size_t i = 0; i < num; ++i)
{
phone[i] = person.phone(i);
std::string phone_num = phone[i].number();
int type = phone[i].type();
}
Protocol buffers have many advantages over XML for serializing structured data. Protocol buffers:
Json、XML、ProtoBuf特点比较
Json
XML
Protobuf
All have good support on most platforms.
以上均为网上整理
另通过ICE和protobuf写了个简单的测试例子:http://pan.baidu.com/s/1i3oPfdN