Google Protocol Buffer在QT Creator使用教程(四)proto序列化和反序列化

上一教程对proto文件的语法进行了详细说明,本教程将对google protocol buffer数据序列化和反序列化进行举例说明。

下面先以最简单的数据结构为例:

第一步,新建项目,选择Qt Console Application

第二步,点击choose后,项目的名称和保存位置自己定义,有意义的工程名即可。

 

 第三步,然后一直点击下一步,直到选择kit,选择如下图所示:

 点击下一步即可。

教程(一)中解压的文件中有examples文件夹,

在此文件夹下新建proto文件,内容如下:

 message person
{
required string name=1;
optional int32  age=2;
}

然后在examples文件夹中执行以下命令:

protoc -I=D:\protobuf-2.6.1\examples --cpp_out=D:\protobuf-2.6.1\examples D:\protobuf-2.6.1\examples\test_person.proto

命令中的文件夹名称根据需要修改。执行上述命令后生成两个文件:

 将生成的文件复制到qt工程中并导入。导入后.cc文件有如下问题:

 因为没有将这些文件加入pro文件中。

首先将D:\protobuf-2.6.1\vsprojects目录下的include文件夹复制到工程文件F:\test_proto下,然后在pro文件中输入:

INCLUDEPATH += F:\test_proto\include

除此之外,还需将lib文件加入到pro文件中,首先将D:\protobuf-2.6.1\vsprojects下的Debug文件夹复制到工程文件夹中,然后在Qt文件夹中右键工程名,点击“添加库”-----选择“外部库”------然后选择库文件旁边的浏览,选择如下图所示路径:

包含路径会自动生成。点击下一步后将内容添加到pro文件中即可。

至此,环境以及配置完成。下面就开始编辑程序:

#include"test_person.pb.h"
using namespace std;
#include"iostream"
int main()
{
 person p;//首先给message命名
 p.set_age(18);//将age赋值
 p.set_name("djx");//将name赋值
 string str;
 p.SerializeToString(&str);//将序列化后的二进制文件保存到str文件中

 person p1;//反序列化时需要重命名
 p1.ParseFromString(str);//反序列化

 cout<<"person name: "<<p1.name()<<endl;//将反序列化后的数据输出
 cout<<"person age: "<<p1.age();

}

程序运行结果:

 google protocol buffer数据在Qt creator中的序列化和反序列化的教程到此结束。下一教程将对更加复杂的数据结构repeated进行说明。如果有问题可以在评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值