当前位置: 首页 > news >正文

jsp个人网站设计网站设计制造

jsp个人网站设计,网站设计制造,如何自己设置网站,短视频宣传片制作文章目录 枚举类型ANY 类型oneof 类型map 类型改进通讯录实例 枚举类型 protobuf里有枚举类型#xff0c;定义如下 enum PhoneType {string home_addr 0;string work_addr 1; }同message一样#xff0c;可分为 嵌套定义#xff0c;文件内定义#xff0c;文件外定义。不… 文章目录 枚举类型ANY 类型oneof 类型map 类型改进通讯录实例 枚举类型 protobuf里有枚举类型定义如下 enum PhoneType {string home_addr 0;string work_addr 1; }同message一样可分为 嵌套定义文件内定义文件外定义。不过多演示 但是值得注意的点是 同级同层的枚举类型各个枚举类型中的常量不能重名否则编译会报错。如下 enum A {int32 a 0; } enum B {int32 a 0; }A和B有相同的变量a所以会报错 单个 .proto 文件下最外层枚举类型和嵌套枚举类型不算同级。如下 enum A {int32 a 0; } message C {enum B{int32 a 0;} }多个 .proto 文件下若一个文件引入了其他⽂件且每个文件都未声明 package每个 proto 文 件中的枚举类型都在最外层算同级。如下 // 在 A.proto 文件里 import B.proto enum A {int32 a 0; // 报错B.proto 里以及定义 } ----------------------- // 在 B.proto 文件里 enum B {int32 a 0; }多个 .proto 文件下若一个文件引入了其他文件且每个文件都声明了 package不算同级。如下 // 在 A.proto 文件里 import B.proto package A; enum A {int32 a 0; } ----------------------- // 在 B.proto 文件里 package B; enum B {int32 a 0; }ANY 类型 介绍一下ANY类型ANY类型表示任意类型 头文件位置 /usr/local/protobuf/include/google/protobuf/ 如何将其引入 .proto 文件里 // 在/usr/local/protobuf/include import google/protobuf/any.proto; // 使用 message Any{google.protobuf.Any data 1; }介绍常用函数 // 已知信息如下 / contacts.proto文件 // syntax proto3 package contacts; import google/protobuf/any.proto; // 引入Any类型 message PeopleInfo {// 可以用于任何类型的anygoogle.protobuf.Any data 1; }message Address {string home_addr; } test.cc文件 // #include iostream #include contacts.pb.h // contacts.proto 编译后生成的头文件 using namespace std;int main() {// 包装contact2::PeopleInfo people;contact2::Address addr;addr.set_home_addr(中国);google::protobuf::Any* any people.mutable_data(); // 开辟一段any对象的空间any-PackFrom(addr); // 将addr打包成Any类型// 转换contact2::Address addr2;if(people.has_data()){google::protobuf::Any any people.data(); // 获取people里的Any类对象 if(any.Iscontact2::Address()) // 判断any类型是否为 Address 类{any.UnpackTo(addr2); // 输出型参数填充add2cout addr2.home_addr() endl; // 打印}}return 0; }编译 .proto 文件然后编译连接 test.cc 文件执行结果如下 执行大致流程 分类讲解一下常用函数 属于people对象的 Any* mutable_data(); ------- // 开辟一段 any 对象的空间 Any data() const; ----------- // 获得 any 对象即people里的data bool has_data() const; ------- // 判断有无对 any 对象赋值 属于 people 里 Any类型的data 对象的 bool PackFrom(const Message message); -------- // 将任意类型转换成 Any 类 bool UnpackTo(Message* message) const; -------- // 将 any 对象里的值赋给相对应类型的对象 template class T bool Is() const; -------- // 判断是否为对应类型 oneof 类型 oneof 类型语法简单 定义如下 message PeopleInfo {string name 1;oneof gender{string male 2;string female 3;} }但是值得注意的点是 可选字段中的字段编号不能与非可选字段的编号冲突。不能在 oneof 中使用 repeated 字段。将来在设置 oneof 字段中值时如果将 oneof 中的字段设置多个那么只会保留最后⼀次设置的成员之前设置的 oneof 成员会自动清除。 看看编译后的 .pb.h 文件里定义的内容 class PeopleInfo final :public ::PROTOBUF_NAMESPACE_ID::Message {enum GenderCase {kMale 2,kFemale 3,GENDER_NOT_SET 0,};// string male 2;bool has_male() const;void clear_male();const std::string male() const;template typename ArgT0 const std::string, typename... ArgTvoid set_male(ArgT0 arg0, ArgT... args);std::string* mutable_male();PROTOBUF_NODISCARD std::string* release_male();void set_allocated_male(std::string* male);// string female 3;bool has_female() const;void clear_female();const std::string female() const;template typename ArgT0 const std::string, typename... ArgTvoid set_female(ArgT0 arg0, ArgT... args);std::string* mutable_female();PROTOBUF_NODISCARD std::string* release_female();void set_allocated_female(std::string* female);void clear_gender();GenderCase gender_case() const; }会将 oneof 中的多个字段定义为⼀个枚举类型。 设置和获取对 oneof 内的字段进⾏常规的设置和获取即可但要注意只能设置⼀个。如果设置多个那么只会保留最后⼀次设置的成员。清空oneof字段clear_ 方法获取当前设置了哪个字段_case 方法设置值方法 set_判断该值是否存在方法has_ map 类型 类似于C里面的 map 类型protobuf自己实现了一个类似的数据结构protobuf 的 map 类型的实现是基于它的 Message 类型的。 定义如下 message PeopleInfo {mapstring, string info 1; }但是值得注意的点是 repeated map key_type, value_type map_name N; key_type 是除了 float 和 byte 的其他任何标量类型。value_type 可以是任意类型map 也不可以被 repeated 修饰map 中存入的元素是无序的 讲解一下几个相关常用函数 在PeopleInfo对象里一般用 mutable_info ( 这里的 info 是对应map类对象 info ) 来开辟一段空间返回 map 指针来操控info。 函数原型Map std::string, std::string *mutable_info()void clear_info(); 清空对象里的内容。 此外map还支持迭代器和C里的 unorderedmap 十分类似。 改进通讯录实例 运用上述知识点对上一篇的通讯录代码进行增添功能 contacts.proto syntax proto3; package contact2;// 在/usr/local/protobuf/include import google/protobuf/any.proto;// 地址信息 message Address {string home_addr 1;string work_addr 2; } // 个人信息 message PeopleInfo {string name 1;int32 age 2;// 嵌套定义message Phone{string number 1;// 嵌套枚举enum PhoneType{MP 0; // 移动电话TEL 1; // 固定电话}PhoneType type 2;}// repeated 修饰词 修饰的变量相当于数组repeated Phone phone 3;google.protobuf.Any data 4;// 其他联系方式oneof other_contacts{string QQ 5;string Wechat 6;}// 备注mapstring, string remark 7; }// 通讯录 message Contacts {repeated PeopleInfo contacts 1; } write.cpp 执行结果 read.cpp
http://www.pierceye.com/news/284403/

相关文章:

  • 网页制作与网站建设的发展趋势设想wordpress必装插件
  • 网站模板下载百度云链接怎么做的学做粤菜的网站
  • 牛栏前网站建设整站优化推广品牌
  • 太原做网站找谁阳江公司做网站
  • 企业网站aspwordpress原生相册
  • 重庆网站建设哪家公司那家好企业宣传软文
  • 如何选择营销网站建设什么网站做优化最好?
  • 个人博客网站模板素材网站的运营方案
  • wordpress增加网站网页关键词jquery验证网站地址
  • 企业招聘网站模板网站页面设计需要遵循的六大原则
  • 网站界面设计说明关键词排名顾问
  • 滨江区网站开发公司贵阳住房和城乡建设局网站
  • 如何建设小网站邢台市天气预报15天
  • 网站收录量低怎么做舟山公司网站制作
  • 部队网站模板计算机网站建设员
  • 对象储存做网站微博内网站怎么做的
  • 运城做网站要多少钱谷歌网站英文
  • 校园网站建设的意见与建议做儿童交互网站
  • 7黄页网站建设网站建设培训会讲话
  • 百度推广公司地址苏州优化方式
  • 做一个电商网站建设银行网站打不开用什么浏览器
  • 保定住房和城乡建设局网站沙洋网站定制
  • 北京电脑培训网站网站首页怎么做全屏swf
  • 网站建设 设计 优化 维护爱站网关键词挖掘工具
  • 做电影收费网站二级域名查询
  • 销售网站模板a5站长网网站交易
  • 网站需要怎么做的吗做营销网站那个好
  • 苏州网站建设软件收费广东网站设计哪家专业
  • 中国产品网免费网站网站自定义功能实现
  • 做微信小程序和做网站短视频素材下载网站