转自: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(); }新闻热点
疑难解答