ProtoBuf练习(五)

表类型

protobuf语言的maps字段类型相当于C++语言的std::map类型

工程目录结构

1$ ls proto/ 2sample_maps.proto

proto文件

1$ cat proto/sample_maps.proto 2syntax = "proto3"; 3 4message home 5{ 6 string addr = 1; 7} 8 9message sample_maps 10{ 11 map<int32, string> ids = 1; 12 map<string, home> infos = 2; 13}

读写源文件

1$ cat reader.cpp 2#include <fstream> 3#include <iostream> 4#include "sample_maps.pb.h" 5 6using namespace std; 7 8int main(int argc, char *argv[]) 9{ 10 fstream input("./log", ios::in | ios::binary); 11 cout << "Deserialize start." << endl; 12 13 sample_maps m; 14 if (!m.ParseFromIstream(&input)) 15 { 16 cout << "Deserialize failed." << endl; 17 return -1; 18 } 19 20 auto ids = m.ids(); 21 for (auto iter = ids.cbegin(); iter != ids.cend(); iter++) 22 cout << iter->first << " : " << iter->second << endl; 23 24 auto infos = m.infos(); 25 for (auto iter = infos.cbegin(); iter != infos.cend(); iter++) 26 cout << iter->first << " : " << iter->second.DebugString(); 27 28 cout << "Deserialize end." << endl; 29 input.close(); 30 return 0; 31} 32 33$ cat writer.cpp 34#include <fstream> 35#include <iostream> 36#include "sample_maps.pb.h" 37 38using namespace std; 39 40int main(int argc, char *argv[]) 41{ 42 sample_maps m; 43 auto ids_ptr = m.mutable_ids(); 44 (*ids_ptr)[1] = "fwd"; 45 (*ids_ptr)[2] = "xb"; 46 47 auto infos_ptr = m.mutable_infos(); 48 home h; 49 h.set_addr("nj"); 50 (*infos_ptr)["fwd"] = h; 51 52 fstream output("./log", ios::out | ios::trunc | ios::binary); 53 cout << "Serialize start." << endl; 54 if (!m.SerializeToOstream(&output)) 55 { 56 cout << "Serialize failed." << endl; 57 return -1; 58 } 59 output.close(); 60 cout << "Serialize end." << endl; 61 return 0; 62}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )