ProtoBuf练习(五)
表类型
protobuf语言的maps字段类型相当于C++语言的std::map类型
工程目录结构
$ ls proto/
sample_maps.proto
proto文件
$ cat proto/sample_maps.proto
syntax = "proto3";
message home
{
    string addr = 1;
}
message sample_maps
{
    map<int32, string> ids = 1;
    map<string, home> infos = 2;
}
读写源文件
$ cat reader.cpp
#include <fstream>
#include <iostream>
#include "sample_maps.pb.h"
using namespace std;
int main(int argc, char *argv[])
{
    fstream input("./log", ios::in | ios::binary);
    cout << "Deserialize start." << endl;
    sample_maps m;
    if (!m.ParseFromIstream(&input))
    {
        cout << "Deserialize failed." << endl;
        return -1;
    }
    auto ids = m.ids();
    for (auto iter = ids.cbegin(); iter != ids.cend(); iter++)
        cout << iter->first << " : " << iter->second << endl; 
    auto infos = m.infos();
    for (auto iter = infos.cbegin(); iter != infos.cend(); iter++)
        cout << iter->first << " : " << iter->second.DebugString(); 
    cout << "Deserialize end." << endl;
    input.close();
    return 0;
}
$ cat writer.cpp
#include <fstream>
#include <iostream>
#include "sample_maps.pb.h"
using namespace std;
int main(int argc, char *argv[])
{
    sample_maps m;
    auto ids_ptr = m.mutable_ids();
    (*ids_ptr)[1] = "fwd";
    (*ids_ptr)[2] = "xb";
    auto infos_ptr = m.mutable_infos();
    home h;
    h.set_addr("nj");
    (*infos_ptr)["fwd"] = h;
    fstream output("./log", ios::out | ios::trunc | ios::binary);
    cout << "Serialize start." << endl;
    if (!m.SerializeToOstream(&output))
        {
                cout << "Serialize failed." << endl;
                return -1;
        }
    output.close();
    cout << "Serialize end." << endl;
    return 0;
}
												
											ProtoBuf练习(五)的更多相关文章
- erlang抽象码与basho的protobuf
		
erlang抽象码与basho的protobuf(一)使用 erlang抽象码与basho的protobuf(二)代码生成原理之词法与语法分析 erlang抽象码与basho的protobuf(三)代 ...
 - Mina、Netty、Twisted一起学(五):整合protobuf
		
protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化.反序列化),一般应用于网络传输,可支持多种编程语言. protobuf如何使用这里不再介绍, ...
 - Netty(五)序列化protobuf在netty中的使用
		
protobuf是google序列化的工具,主要是把数据序列化成二进制的数据来传输用的.它主要优点如下: 1.性能好,效率高: 2.跨语言(java自带的序列化,不能跨语言) protobuf参考文档 ...
 - protobuf中文教程(第一篇)
		
声明:本文大部分内容翻译自官方英文文档,其中可能穿插着加入自己的语言用以辅助理解,本文禁止转载. 一.什么是protocol buffers Protocol buffers是一个灵活的.高效的.自动 ...
 - 解决protobuf不能直接在IOS上使用,利用protobuf-net在IOS上通讯
		
---------------------------------------------------------------------------------------------------- ...
 - 在ios android设备上使用 Protobuf (使用dll方式)
		
http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http://g ...
 - (一)Protobuf的Java使用
		
学习使用Protobuf,创建java文件 windows : 步骤一:两个文件:proto.exe, protobuf-Java-2.4.1.jar 步骤二:建立一个工程CreateProtoBu ...
 - Netty4.x中文教程系列(五)编解码器Codec
		
Netty4.x中文教程系列(五)编解码器Codec 上一篇文章详细解释了ChannelHandler的相关构架设计,版本和设计逻辑变更等等. 这篇文章主要在于讲述Handler里面的Codec,也就 ...
 - Mac IDEA插件——protobuf 插件
		
最近在搞PB的版本的升级,历史的PB的版本是2.4,现在是打算升级到3.2,当面PB的版本肯定有很多变化了,就不再这里多说了,这里重点说一说,采用IDEA的插件方便执行PB的文件的JAVA编译,这样的 ...
 
随机推荐
- github之克隆
			
git clone --depth=10 git_仓库_url 只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合 -b --single--branch ...
 - 初学Linux笔记
			
自动获取IP地址的局域网中,用的是DHCP服务器
 - Linux课程---9、安装RPM包(RPM的全称是什么)
			
Linux课程---9.安装RPM包(RPM的全称是什么) 一.总结 一句话总结: redhat package management 1.在Packages中查找和php相关的文件如何查找? ls ...
 - Selenium-几种元素定位方式
			
#识别元素并操作#一般有如下几种方法,其中id最为常用.这里需要注意识别元素一定要用唯一id 1.find_element_by_id("value") #! /usr/bin/e ...
 - ATL实现COM组件
			
参考文献:https://blog.csdn.net/Marcus2006/article/details/41978799 ATL实现COM组件比较简单,关键是在程序中如何调用该组件. vs2010 ...
 - 利用bootsrap控件 实现文件上传功能
			
源代码实例:https://github.com/kartik-v/bootstrap-fileinput 一.jsp页面 <%@ page language="java" ...
 - 解决jquery动态创建元素绑定事件失效问题
			
存在问题 在我们使用jquery动态创建元素后往往会遇到一些问题,如: 给.button按钮绑定了点击时间,执行alert:(1); 点击事件代码如下: <script>$("# ...
 - JDBC获得数据库连接及使用
			
1.Connection Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现 在程序中不需要直接去访问实现了 ...
 - 【C++】标准库sort函数的自定义排序
			
自定义排序需要单独写一个compare函数 例1 LeetCode 056. Merge Intervals Given a collection of intervals, merge all ov ...
 - for循环中的条件执行循序
			
问题: public class Main { public static void main(String[] args) { int i,n,length = 0; for(i=1;length& ...