关于 Protocol Buffer 的简单运用
2012-05-14 18:19
302 查看
最近项目中,有使用到protobuf,但只是用来作为数据结构流保存数据到数据库,因此,只是用到及少部分内容
首先,需要创建一个后缀名为.proto的文件,暂定其名为test.proto,此文件是protobuf的预读文件.其格式为:
protobuf有一些关键字:
package //相当于namespace
message //相当于C++的struct关键字
required //表示此数据类型是必须的
optional //表示此数据类型是可选的
repeated //表示此数据是个不定长数组
之后,创建一个Generated文件夹用于放置转换为执行文件的protobuf文件
再写一个批处理程序命名为transfer.bat,其内容为
protoc --proto_path=.\ --cpp_out=.\Generated test.proto
pause
运行此批处理程序,在Generated文件下,将会出现两个文件,test.pb.cc和test.pb.h,这两个就是C++工程所需要的文件,将其引入工程,编译,之后在C++代码中就可以这样使用protobuf:
其他相关文章链接: http://code.google.com/p/protobuf/
http://blog.csdn.net/ciml/article/details/5753367
http://www.jb51.net/article/33030.htm
https://developers.google.com/protocol-buffers/docs/proto?hl=zh-CN(官网)
首先,需要创建一个后缀名为.proto的文件,暂定其名为test.proto,此文件是protobuf的预读文件.其格式为:
package RT; message protoData { required uint32 playerid=1; required string name=2; optional bool bNew=3; message protoAttrValue { required uint32 attrtype=1; required uint32 attrvalue=2; } repeated protoAttrValue m_mapAttrValue=4; }
protobuf有一些关键字:
package //相当于namespace
message //相当于C++的struct关键字
required //表示此数据类型是必须的
optional //表示此数据类型是可选的
repeated //表示此数据是个不定长数组
之后,创建一个Generated文件夹用于放置转换为执行文件的protobuf文件
再写一个批处理程序命名为transfer.bat,其内容为
protoc --proto_path=.\ --cpp_out=.\Generated test.proto
pause
运行此批处理程序,在Generated文件下,将会出现两个文件,test.pb.cc和test.pb.h,这两个就是C++工程所需要的文件,将其引入工程,编译,之后在C++代码中就可以这样使用protobuf:
//设置数据 RT::protoData data; data.set_playerid(5); data.set_name("张三"); RT::protoData::protoAttrValue* pAttr = data.add_m_mapattrvalue(); pAttr->set_attrtype(2); pAttr->set_attrvalue(4); std::string protobuf; data;.SerializeToString(&protobuf);//组成protobuf //读取数据 RT::protoData data; data.ParseFromString(protobuf); int nId = data.playerid(); std::string name = data.name(); int nSize = data.m_mapattrvalue_size(); for ( int n=0; n<nSize; n++ ) { const RT::protoAttrValue& attr = data.m_mapattrvalue(n); int ntype = attr.attrtype(); int nvalue = attr.attrvalue(); }
其他相关文章链接: http://code.google.com/p/protobuf/
http://blog.csdn.net/ciml/article/details/5753367
http://www.jb51.net/article/33030.htm
https://developers.google.com/protocol-buffers/docs/proto?hl=zh-CN(官网)
相关文章推荐
- 【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 创建文件
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 读取文件
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用)
- 【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 读取文件
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 高级操作
- 关于字符串判断的几个常用属性 以及简单项目实现中数组运用的初步思想 蓝懿教育
- 【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 高级操作
- 关于session cookie的简单介绍及 session会话的简单运用
- android中关于sqlite的简单运用
- 【前端学习笔记】2015-09-01 附二 关于jq选择器的简单运用
- 关于echarts和ajax的简单运用
- Android 关于 ContentResolver 内容解析者的简单运用
- 关于Linq的.distinct()方法的运用(一个简单的例子)
- 关于thinkphp钩子在onethink中的简单运用
- 关于简单控件的运用
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 创建文件
- java Class类的简单运用
- 我关于c#中委托的简单理解
- Android中关于JNI 的学习(四)简单的样例,温故而知新
- JAVA 关于Icon,Image,ImageIcon的简单的对比参考 分类: Java Game 2014-08-14 17:08 210人阅读 评论(0) 收藏