protobuf入门教程(四):repeated限定修饰符
来源:互联网 发布:组策略隐藏网络配置 编辑:程序博客网 时间:2024/05/04 06:24
限定修饰符说明
repeated 代表可重复,我们可以理解为数组:
syntax = "proto3";//指定版本信息,不指定会报错message Person //message为关键字,作用为定义一种消息类型{ string name = 1; //姓名 int32 id = 2; //id string email = 3; //邮件}message AddressBook{ repeated Person people = 1;}
字段API
而对于字段修饰符为repeated的字段生成的函数,则稍微有一些不同,如people字段,则编译器会为其产生如下的代码:
int people_size() const;void clear_people();const ::Person& people(int index) const;::Person* mutable_people(int index);::Person* add_people();::google::protobuf::RepeatedPtrField< ::Person >* mutable_people();const ::google::protobuf::RepeatedPtrField< ::Person >& people() const;
测试程序
void set_addressbook(){ AddressBook obj; Person *p1 = obj.add_people(); //新增加一个Person p1->set_name("mike"); p1->set_id(1); p1->set_email("mike@qq.com"); Person *p2 = obj.add_people(); //新增加一个Person p2->set_name("jiang"); p2->set_id(2); p2->set_email("jiang@qq.com"); Person *p3 = obj.add_people(); //新增加一个Person p3->set_name("abc"); p3->set_id(3); p3->set_email("abc@qq.com"); fstream output("pb.xxx", ios::out | ios::trunc | ios::binary); bool flag = obj.SerializeToOstream(&output);//序列化 if (!flag) { cerr << "Failed to write file." << endl; return; } output.close();//关闭文件}void get_addressbook(){ AddressBook obj; fstream input("./pb.xxx", ios::in | ios::binary); obj.ParseFromIstream(&input); //反序列化 input.close(); //关闭文件 for (int i = 0; i < obj.people_size(); i++) { const Person& person = obj.people(i);//取第i个people cout << "第" << i + 1 << "个信息\n"; cout << "name = " << person.name() << endl; cout << "id = " << person.id() << endl; cout << "email = " << person.email() << endl << endl; }}
编译运行结果:
本教程源代码下载地址:http://download.csdn.net/detail/tennysonsky/9884312
阅读全文
0 0
- protobuf入门教程(四):repeated限定修饰符
- protobuf入门教程(四):repeated限定修饰符
- protobuf的Required,Optional,Repeated限定修饰符
- protobuf的Required,Optional,Repeated限定修饰符
- protobuf协议的Required,Optional,Repeated限定修饰符
- protobuf的Required,Optional,Repeated限定修饰符
- 入门教程:C++中的const限定修饰符
- const限定修饰符
- volatile 限定修饰符
- Const限定修饰符
- 访问限定修饰符
- 限定修饰符volatile
- protobuf的配置原始文件.proto中,使用修饰符repeated、required、optional生成的java文件的区别
- C++_const限定修饰符
- 关于java限定修饰符
- C++ const限定修饰符
- protobuf 使用 repeated 出错
- protobuf repeated的用法
- 程序员最核心的竞争力是什么?
- android隐藏标题栏
- java 独立存储线程变量技术——ThreadLocal
- 利用CombineFileInputFormat合并小文件
- GPIO 输入—按键检测
- protobuf入门教程(四):repeated限定修饰符
- 数据类型及数据结构资料
- weblogic被root重启后出现 java.lang.ClassCastException
- vue2.0之axios使用详解(一)
- Nginx增加自定义域名配置服务
- 51NOD 1806 wangyurzee的树(容斥原理 + 组合数学)
- Array() 对象
- 生产者消费者模型
- Windows下使用Hexo+GithubPage搭建博客