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

电子商务网站开发教程网站的类型大全

电子商务网站开发教程,网站的类型大全,张店易宝网站建设,哪个网站可以做分销文章目录 消息体定义字段规则编译选项实战#xff1a;编写一个通讯录文件 消息体定义 文件内定义 message Phone {string number 1; }message PeopleInfo {string name 1;int32 age 2;Phone phone 3; }内嵌定义 message PeopleInfo {string name 1;int32 age 2;messa… 文章目录 消息体定义字段规则编译选项实战编写一个通讯录文件 消息体定义 文件内定义 message Phone {string number 1; }message PeopleInfo {string name 1;int32 age 2;Phone phone 3; }内嵌定义 message PeopleInfo {string name 1;int32 age 2;message Phone{string number 1;}Phone phone 3; }文件外定义 // 文件 Phone.proto syntax proto3; package phone;message Phone {string number 1; }import Phone.proto; message PeopleInfo {string name 1;int32 age 2;// 引⼊的⽂件声明了package使⽤消息时需要⽤ ‘命名空间.消息类型’ 格式phone.Phone phone 3; }字段规则 消息的字段可以用下面几种规则来修饰 singular 消息中可以包含该字段零次或⼀次不超过⼀次。proto3 语法中字段默认使⽤该 规则。repeated 消息中可以包含该字段任意多次包括零次其中重复值的顺序会被保留。可以理解为定义了⼀个数组。 续回上篇继续完善contacts.proto文件的内容 syntax proto3; package contacts;message PeopleInfo {string name 1;int32 age 2;// 采用内嵌式message Phone{string number 1;}// repeated 修饰词 修饰的变量相当于数组repeated Phone phone 3; }// 通讯录 message Contacts {repeated PeopleInfo contacts 1; }编译选项 补充上篇 -h : protoc -h 表示帮助 上图是所有内容下面重点讲解一下 - decodedecode 大概意思是从标准输入读取给定类型的二进制消息并以文本格式将其写入标准输出。消息类型必须在PROTO FILES或其导入中定义。 先看用法 protoc -decodecontacts.Contacts contacts.proto contacts.bin执行指令后结果如下 这个编译条件可以快速查看序列化后二进制文件的内容是一个很便捷的操作 查看二进制内容的工具还有hexdump hexdump是Linux下的一个二进制文件查看工具它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看。 -C: 表示每个字节显示为16进制和相应的ASCII字符 hexdump -C 二进制文件名 eg:hexdump -C contact.bin实战编写一个通讯录文件 上面完善编写了contacts.proto文件现在完成写文件write.cpp和读文件read.cppwrite.cpp文件主要用于将通讯录信息通过protobuf的序列化然后写入contact.bin文件内read.cpp文件主要用于通过protobuf的反序列化对contact.bin文件内容的读取。 write.cpp的编写 #includeiostream #includefstream #includecontacts.pb.h using namespace std;void AddPeopleInfo(contact2::PeopleInfo *people) {cout --------------新增联系⼈-------------- endl;cout 请输⼊联系⼈姓名: ;string name;getline(cin, name);people-set_name(name);cout 请输⼊联系⼈年龄: ;int age;cin age;cin.ignore(256, \n); // 清除缓冲区的内容大于256或遇到\n停止people-set_age(age);for(int i 1; ;i){cout 请输⼊联系⼈电话 i (只输⼊回⻋完成电话新增): ;string number;getline(cin, number);if(number.empty()) break;people-add_phone()-set_number(number);}cout -------------添加联系⼈成功------------- endl; }int main() {contacts::Contacts con;fstream in(contact.bin, ios::in | ios::binary);if(!in)cout contact.bin not exist, it is being created now endl;// ParseFromIstream方法的作用: 读取in里的内容并将其反序列化保存起来else if(!con.ParseFromIstream(in)){cerr Fail to parse endl;in.close();return -1;}in.close();// 写入通讯录信息// 前文有提到repeated修饰的变量相当于数组所以// con.add_contacts()就相当新分配了一个contacts变量AddPeopleInfo(con.add_contacts());fstream out(contact.bin, ios::out | ios::trunc | ios::binary);// SerializeToOstream方法的作用: 读取out里的内容并将其序列化保存起来if(!con.SerializeToStream(out)){cerr Fail to serialize endl;out.close();return -1;}cout write success endl;out.close();return 0; }执行效果如下 read.cpp的编写 #include iostream #include fstream #include contacts.pb.husing namespace std;void PrintfContacts(contact2::Contacts con) {cout ------------- 通讯录 ------------- endl;for(int i 0; i con.contacts_size(); i){cout 联系人 i1 endl;const contact2::PeopleInfo people con.contacts(i);cout 姓名 people.name() endl;cout 年龄 people.age() endl;for(int j 0; j people.phone_size(); j){auto phone people.phone(j);cout 号码 j1 : phone.number() endl;}}cout ------------------------------- endl; }int main() {contact2::Contacts con;fstream in(contact.bin, ios::in | ios::binary);if(!in)cout contact.bin not exist, it is being created now endl;else if(!con.ParseFromIstream(in)){in.close();return -1;}PrintfContacts(con);in.close();return 0; }执行效果如下 补充主要函数的使用 bool ParseFromIstream(std::istream* input); Parse 系列的函数有很多因为前面用了文件流提取内容所以这里使用 Parse 系列的Istream()。 作用读取 input 里的内容并将其反序列化保存起来 add_contacts() 因为 Contacts 里的 contacts 字段被 repeat 修饰所以相当于数组这个函数是专门新增一个 contacts 变量的。ps因为有contacts所以才是 add_contacts() 如果是 其他 那么就会对应生成 add_其他() bool SerializeToOstream(std::ostream* output) const; 作用: 读取 output 里的内容并将其序列化保存起来 contacts_size(); 求变量个数可以认为数组大小注意 size 前面的名称是变量名称。 set_变量名(); 代码里有出现set_age(age)set_name(name)set_number(number) 没错这些都是设置值的函数 以上函数均包含在 文件.pb.h 里必要是时可以跳转进去里面学习函数使用上面仅讲解了使用到的函数
http://www.zqtcl.cn/news/670285/

相关文章:

  • 给网站做友情链接凡科网干嘛的
  • 网站经常出现502牧星网站建立
  • 个人网站建设的收获dw网站导航怎么做
  • 徐州网站设计快速排名网站
  • dede手机网站跳转口碑营销平台
  • 开一个素材设计网站怎么做的网页传奇手机版
  • 网站开发后端框架什么意思树莓派3 部署wordpress
  • 站长之家最新域名查询合肥网站建设5k5
  • h5做网站什么软件北京公司注销流程及费用
  • 淮北市相山区建设局网站合肥比较好的网站制作
  • 松岗营销型网站建设公司网站需要服务器吗
  • 图书馆网站信息化建设中国seo第一人
  • 域名网站负责人的责任一键制作单页网站
  • 南宁建设局网站建设有限公司
  • 湛江建设工程交易中心网站企业营销网站建设步骤
  • 网站所有者查询罗湖做网站的公司
  • 网站推广的目标是什么如何提高网站在百度的排名
  • 建设网站基础wordpress 网络图片
  • 深圳网站搜索优化工具义乌公司网站
  • 百度搜索网站带图片sem是什么品牌
  • 百度网盘app下载辽宁seo
  • 一般做网站用什么软件企业管理咨询服务机构
  • 达内培训网站开发金融公司网站 html
  • 珠海网站制作推荐微信营销和微博营销的区别
  • 电影网站如何做5网站建设公司
  • 河南网站优化公司哪家好南山网站设计线
  • 网站构建代码模板番禺网站建设
  • 拟一份饰品网站建设合同网站开发应注意哪些问题
  • 芜湖建站公司做网站的人多吗
  • 网站怎么加二级域名微信授权登录网站退出怎么做