首页 > 学院 > 开发设计 > 正文

ProtoBuf 常用序列化/反序列化API

2019-11-10 18:12:05
字体:
来源:转载
供稿:网友

转自:http://blog.csdn.net/sealyao/article/details/6940245

1、C数组的序列化和反序列化API

[cpp] view plain copy//C数组的序列化和序列化API  bool ParseFromArray(const void* data, int size);  bool SerializeToArray(void* data, int size) const;  //使用  void set_people()               {      wp.set_name("sealyao");         wp.set_id(123456);              wp.set_email("sealyaog@Gmail.com");      wp.SerializeToArray(parray,256);  }    void get_people()               {      rap.ParseFromArray(parray,256);      cout << "Get People from Array:" << endl;      cout << "/t Name : " <<rap.name() << endl;      cout << "/t Id : " << rap.id() << endl;      cout << "/t email : " << rap.email() << endl;  }  

2、C++ String的序列化和反序列化API

[cpp] view plain copy//C++string序列化和序列化API  bool SerializeToString(string* output) const;  bool ParseFromString(const string& data);  //使用:  void set_people()               {      wp.set_name("sealyao");         wp.set_id(123456);              wp.set_email("sealyaog@gmail.com");      wp.SerializeToString(&pstring);  }    void get_people()               {      rsp.ParseFromString(pstring);        cout << "Get People from String:" << endl;      cout << "/t Name : " <<rsp.name() << endl;      cout << "/t Id : " << rsp.id() << endl;      cout << "/t email : " << rsp.email() << endl;  }  

3、文件描述符序列化和反序列化API

[cpp] view plain copy //文件描述符的序列化和序列化API   bool SerializeToFileDescriptor(int file_descriptor) const;   bool ParseFromFileDescriptor(int file_descriptor);     //使用:  void set_people()  {      fd = open(path,O_CREAT|O_TRUNC|O_RDWR,0644);      if(fd <= 0){          perror("open");          exit(0);       }         wp.set_name("sealyaog");      wp.set_id(123456);      wp.set_email("sealyaog@gmail.com");      wp.SerializeToFileDescriptor(fd);         close(fd);  }    void get_people()  {      fd = open(path,O_RDONLY);      if(fd <= 0){          perror("open");          exit(0);      }      rp.ParseFromFileDescriptor(fd);      std::cout << "Get People from FD:" << endl;      std::cout << "/t Name : " <<rp.name() << endl;      std::cout << "/t Id : " << rp.id() << endl;      std::cout << "/t email : " << rp.email() << endl;      close(fd);  }  

4、C++  stream 序列化和反序列化API

[cpp] view plain copy//C++ stream 序列化/反序列化API  bool SerializeToOstream(ostream* output) const;  bool ParseFromIstream(istream* input);    //使用:  void set_people()  {      fstream fs(path,ios::out|ios::trunc|ios::binary);      wp.set_name("sealyaog");      wp.set_id(123456);      wp.set_email("sealyaog@gmail.com");      wp.SerializeToOstream(&fs);          fs.close();      fs.clear();  }    void get_people()  {      fstream fs(path,ios::in|ios::binary);      rp.ParseFromIstream(&fs);      std::cout << "/t Name : " <<rp.name() << endl;      std::cout << "/t Id : " << rp.id() << endl;       std::cout << "/t email : " << rp.email() << endl;         fs.close();      fs.clear();  }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表