Protocol Buffer 混合语言数据标准

本文介绍了一种利用Protobuf实现的混合语言数据标准。通过protobuf定义数据结构,并生成多种语言如C++, Java, C的类定义文件。该标准支持序列化与逆序列化的操作,使得不同语言间的数据交换变得简单高效。

一个混合语言数据标准:

(1)用protobuf编写类似XML格式的文本文件作为你的数据结构定义。

(2)用protobuf可执行程序生成对应的类的头文件和源文件。

(3)将<google>文件夹连同生成的头文件和源文件放到一个项目中使用。

(4)可生成C++、Java、C语言对应的类定义文件

(5)A语言序列化之后得到一个字符流S,这种字符流S可以被传递给语言B直接逆序列化,逆序列化之后变成一个语言B的对象


官方网站 :https://code.google.com/p/protobuf/


参考:http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

如果对上文使用过程中产生疑问,你可能需要看下面的更多介绍:


1 下载和安装编译器:在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。


1.1 如果你下载了:https://code.google.com/p/protobuf/downloads/detail?name=protoc-2.5.0-win32.zip则直接运行exe文件即可生成源代码,无需编译。建议windows环境下使用此工具,非常小。


2 你的proto文件名:student.proto,

内容:

 message student
 {
    required int32     id   = 1;
    required string    name = 2; 
 }

放在文件夹:SRC_DIR中,而SRC_DIR文件夹与protoc.exe文件同目录,另外为了盛放即将生成目标源代码,在protoc.exe同级目录再建立文件夹:DST_DIR。执行cmd命令:protoc -I=SRC_DIR --cpp_out=DST_DIR SRC_DIR/student.proto

即可在DST_DIR中看到你要的两个文件:

student.pb.h , 定义了 C++ 类的头文件

student.pb.cc , C++ 类的实现文件


到这里基本上没啥好说的了,使用生成的源文件就行了。

 

示例代码:

#include <iostream>
using namespace std;
#include "student.pb.h"

int main(int, char *[])
{
	student data;
	data.set_id(111);
	data.set_name("zhuyongjin");
	string s = data.SerializeAsString();//序列化方法继承自基类,有多个不同的序列化和逆序列化方法,这里仅以string为例
	student data1;
	cout<<data1.id()<<endl;
	data1.ParseFromString(s);
	cout<<data1.id()<<endl;
	cout<<data1.name()<<endl;
	cout<<"hello protobuf!"<<endl;
};


输出:

0
111
student_name
hello protobuf!
请按任意键继续. . .


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值