您的位置:首页 > 其它

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

2013-07-31 15:22 816 查看
各位亲 有时间可以去看看我的[b] “金骏家居淘宝店” http://jinjun1688.taobao.com/shop/view_shop.htm?tracelog=twddp 买时说明在我的博客看到有优惠哦
还有意外礼品赠送 真正的程序员淘宝店

[/b]

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

[cpp] view
plaincopy

//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
plaincopy

//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
plaincopy

//文件描述符的序列化和序列化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 [b]序列化和反序列化API[/b]

[cpp] view
plaincopy

//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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: