博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++使用Protobuf举例
阅读量:4207 次
发布时间:2019-05-26

本文共 1210 字,大约阅读时间需要 4 分钟。

首先安装C++的Protobuf,按官方指导来:

下载release包,解压后编译安装即可。

用法举例,先定义proto文件:

syntax = "proto3";package test;enum Sex {    BOY = 0;    GIRL = 1;}message Student {  int32 Id = 1;     // id  string Name = 2;  // name  Sex Sex = 3;}message Team {    int32 Id = 1;    string Name = 2;    repeated Student Student = 3;}

然后用protoc生成对应的编解码文件: protoc --cpp_out=. test.proto,cpp_out表示生成cpp的编解码源文件。测试代码:

#include 
#include
#include "test.pb.h"using namespace std;using namespace test;int main(){
Team team; team.set_id(1); team.set_name("Rocket"); Student *s1 = team.add_student(); // 添加repeated成员 s1->set_id(1); s1->set_name("Mike"); s1->set_sex(BOY); Student *s2 = team.add_student(); s2->set_id(2); s2->set_name("Lily"); s2->set_sex(GIRL); // encode --> bytes stream string out; team.SerializeToString(&out); // decode --> team structure Team t; t.ParseFromArray(out.c_str(), out.size()); // or parseFromString cout << t.DebugString() << endl; for (int i = 0; i < t.student_size(); i++) {
Student s = t.student(i); // 按索引解repeated成员 cout << s.name() << " " << s.sex() << endl; } return 0;}

编译的时候记得链接protobuf库。Protobuf还是挺好用的。

转载地址:http://kdqli.baihongyu.com/

你可能感兴趣的文章
TopK问题
查看>>
Hive调优
查看>>
HQL排查数据倾斜
查看>>
DAG以及任务调度
查看>>
LeetCode——DFS
查看>>
MapReduce Task数目划分
查看>>
ZooKeeper分布式锁
查看>>
3126 Prime Path
查看>>
app自动化测试---ADBInterface驱动安装失败问题:
查看>>
RobotFramework+Eclipse安装步骤
查看>>
测试的分类
查看>>
photoshop cc2019快捷键
查看>>
pycharm2019版本去掉下划线的方法
查看>>
SQL中EXISTS的用法
查看>>
10丨案例:在JMeter中如何设置参数化数据?
查看>>
11丨性能脚本:用案例和图示帮你理解HTTP协议
查看>>
12丨性能场景:做参数化之前,我们需要考虑什么?
查看>>
13丨性能测试场景:如何进行场景设计
查看>>
14丨性能测试场景:如何理解业务模型
查看>>
Prometheus exporter详解
查看>>