国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ProtoBuffer 簡單例子

2019-11-06 06:36:13
字體:
來源:轉載
供稿:網友

最近學了一下PRotobuf,寫了一個簡單的例子,如下:

person.proto文件

[cpp] view plain copymessage Person{      required string name = 1;      required int32 age = 2;      optional string email = 3;      enum PhoneType{           MOBILE = 1;          HOME = 2;          WORK = 3;      }      message Phone{          required int32 id = 1;          optional PhoneType type = 2 [default = HOME];      }      repeated string phoneNum = 4;  //對應于cpp的vector  }  安裝好protoc以后,執行protoc person.proto --cpp_out=. 生成 person.pb.h和person.pb.cpp

寫文件(write_person.cpp):

[cpp] view plain copy#include <iostream>  #include "person.pb.h"  #include <fstream>  #include <string>    using namespace std;    int main(){      string buffer;      Person person;      person.set_name("chemical");      person.set_age(29);      person.set_email("ygliang2009@Gmail.com");      person.add_phonenum("abc");      person.add_phonenum("def");      fstream output("myfile",ios::out|ios::binary);      person.SerializeToString(&buffer); //用這個方法,通常不用SerializeToOstream      output.write(buffer.c_str(),buffer.size());      return 0;  }  編譯時要把生成的cpp和源文件一起編譯,如下:g++ write_person.cpp person.pb.cpp -o write_person -I your_proto_include_path -L your_proto_lib_path -lprotoc -lprotobuf運行時記得要加上LD_LIBRARY_PATH=your_proto_lib_path

讀文件(read_person.cpp):

[cpp] view plain copy#include <iostream>  #include "person.pb.h"  #include <fstream>  #include <string>    using namespace std;    int main(){      Person *person = new Person;      char buffer[BUFSIZ];      fstream input("myfile",ios::in|ios::binary);      input.read(buffer,sizeof(Person));      person->ParseFromString(buffer);  //用這個方法,通常不用ParseFromString      cout << person->name() << person->phonenum(0) << endl;      return 0;  }  編譯運行方法同上:g++ read_person.cpp person.pb.cpp -o read_person -I your_proto_include_path -L your_proto_lib_path -lprotoc -lprotobuf
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开原市| 马鞍山市| 玉树县| 拜泉县| 上栗县| 丰都县| 连城县| 盐津县| 富锦市| 灌南县| 乐陵市| 日喀则市| 长海县| 晋城| 洪湖市| 茂名市| 和顺县| 郧西县| 布拖县| 南和县| 青岛市| 资阳市| 宁河县| 牡丹江市| 保山市| 马龙县| 彭阳县| 弥勒县| 遂平县| 绩溪县| 澄江县| 辽阳县| 新竹县| 武山县| 盐津县| 香格里拉县| 容城县| 威信县| 醴陵市| 汝阳县| 和龙市|