文档章节

Google Protocol Buffers浅析

彼得
 彼得
发布于 2013/11/27 15:32
字数 374
阅读 93
收藏 0

(1)基本概念,怎么生成pb文件

http://www.cnblogs.com/royenhome/archive/2010/10/29/1864860.html

(2)配置vs2008

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865066.html

(3)序列化

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865153.html

(4)反序列化

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865256.html

(5)四种序列化反序列化

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


//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;
}

//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;
}

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

 //文件描述符的序列化和序列化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);
}








© 著作权归作者所有

共有 人打赏支持
彼得

彼得

粉丝 39
博文 122
码字总数 38726
作品 0
深圳
程序员
私信 提问
Protocol Buffers在windwos下生成对应语言类文件

1:windows下开发,下载源码包和windows下的编译器 https://developers.google.com/protocol-buffers/docs/downloads 下载 Protocol Buffers 2.6.1 full source和 Protocol Compiler 2.6.1 ......

伊人梦醉
2015/12/29
309
0
Protocol Buffers Editor 95c 发布

Protocol Buffers Editor 95c 发布,该版本增加对 Protocol Buffers 扩展的支持。 Protocol Buffers Editor 是一个用来查看和编辑 Google 的 Protocol Buffers 的二进制文件的工具。 Protoc...

oschina
2014/06/11
1K
5
Some Notes of Protocol Buffer C++

Some Notes of Protocol Buffer C++ Operating System: Ubuntu 14.04 Language: C++ 1. Refer to the official guided documentations for the Installation of Protocol Buffer: Overview......

JiaMing
2015/11/22
93
0
Protocol Buffers Editor 0.85 发布

Protocol Buffers Editor 0.85 发布,该版本对界面做了调整,更改了查找功能,包括 CSV 编辑器 和 XML 查看器。 Protocol Buffers Editor 是一个用来查看和编辑 Google 的 Protocol Buffers...

oschina
2012/05/22
513
0
Protocol Buffer的理解

Protocol Buffers是谷歌提供的一种用来序列化结构体数据的机制,类似于XML。官网上这么定义: Protocol buffers are a language-neutral, platform-neutral extensible mechanism for seria...

兔之
2015/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
9分钟前
0
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
17分钟前
0
0
NEO区块链-DAPP开发直通车-第零篇

什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称。 NEL将为开发DAPP提供全面的服务 什么是NEL NEL是 “NewEcon...

NEO-FANS
21分钟前
1
0
可视化软件VisIt在Ubuntu18.04上的安装

可视化软件VisIt在Ubuntu18.04上的安装 参考文档及使用说明 1.下载 在官网下载页面下载合适版本的安装文件,Ubuntu有专用的 https://wci.llnl.gov/simulation/computer-codes/visit/executa...

佚文
26分钟前
1
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部