ProtoBuf 常用序列化/反序列化API
1、C数组的序列化和反序列化API
//C数组的序列化和序列化API
bool ParseFromArray(const void* data, int size);
bool SerializeToArray(void* data, int size) const;
//使用
void set_people()
{wp.set_name("sealyao"); wp.set_id(123456); wp.set_email("sealyaog@gmail.com");wp.SerializeToArray(parray,256);
}void get_people()
{rap.ParseFromArray(parray,256);cout << "Get People from Array:" << endl;cout << "\t Name : " <<rap.name() << endl;cout << "\t Id : " << rap.id() << endl;cout << "\t email : " << rap.email() << endl;
}
2、C++ String的序列化和反序列化API
//C++string序列化和序列化API
bool SerializeToString(string* output) const;
bool ParseFromString(const string& data);
//使用:
void set_people()
{wp.set_name("sealyao"); wp.set_id(123456); wp.set_email("sealyaog@gmail.com");wp.SerializeToString(&pstring);
}void get_people()
{rsp.ParseFromString(pstring); cout << "Get People from String:" << endl;cout << "\t Name : " <<rsp.name() << endl;cout << "\t Id : " << rsp.id() << endl;cout << "\t email : " << rsp.email() << endl;
}
3、文件描述符序列化和反序列化API
//文件描述符的序列化和序列化APIbool SerializeToFileDescriptor(int file_descriptor) const;bool ParseFromFileDescriptor(int file_descriptor);//使用:
void set_people()
{fd = open(path,O_CREAT|O_TRUNC|O_RDWR,0644);if(fd <= 0){perror("open");exit(0); } wp.set_name("sealyaog");wp.set_id(123456);wp.set_email("sealyaog@gmail.com");wp.SerializeToFileDescriptor(fd); close(fd);
}void get_people()
{fd = open(path,O_RDONLY);if(fd <= 0){perror("open");exit(0);}rp.ParseFromFileDescriptor(fd);std::cout << "Get People from FD:" << endl;std::cout << "\t Name : " <<rp.name() << endl;std::cout << "\t Id : " << rp.id() << endl;std::cout << "\t email : " << rp.email() << endl;close(fd);
}
4、C++ stream 序列化和反序列化API
//C++ stream 序列化/反序列化API
bool SerializeToOstream(ostream* output) const;
bool ParseFromIstream(istream* input);//使用:
void set_people()
{fstream fs(path,ios::out|ios::trunc|ios::binary);wp.set_name("sealyaog");wp.set_id(123456);wp.set_email("sealyaog@gmail.com");wp.SerializeToOstream(&fs); fs.close();fs.clear();
}void get_people()
{fstream fs(path,ios::in|ios::binary);rp.ParseFromIstream(&fs);std::cout << "\t Name : " <<rp.name() << endl;std::cout << "\t Id : " << rp.id() << endl; std::cout << "\t email : " << rp.email() << endl; fs.close();fs.clear();
}
ProtoBuf 常用序列化/反序列化API相关推荐
- 序列化反序列化api(入门级)
定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...
- protobuf入门教程(三):常用序列化/反序列化接口
C数组的序列化和反序列化 #include "addressbook.pb.h" #include <iostream> using namespace std;/* ...
- protobuf简单序列化反序列化示例
protoc命令格式 protoc -I=SRC -cpp_out = DRC SRC\*.proto SRC:源路径: DRC:目的路径: 当出现下面无法打开文件错误时,应在工程属性目录下的包 ...
- Google Protobuf编解码(序列化/反序列化)框架
最近工作中使用到protobuffer,查了很多资料,这篇有用,转发收藏,留着以后查阅 本文转自:https://my.oschina.net/pierrecai/blog/873359 编码/解码在 ...
- 高效的序列化/反序列化数据方式 Protobuf
高效的序列化/反序列化数据方式 Protobuf github地址 目录 protocolBuffers 序列化 Int32 String Map slice 序列化小结 protocolBuffer ...
- ProtoBuf的序列化和反序列化(基础库)
内容说明: 说明下什么是ProtoBuf ProtoBuf的序列化和反序列化 ProtoBuf的优势 前后端使用ProtoBuf交互 ProtoBuf简介: Google 的 ProtoBuf ==& ...
- 几种Java常用序列化框架的选型与对比
简介: 序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架.本文会将业界开源的序列化框架进行对比测试,分别从通用性 ...
- 在Spark中自定义Kryo序列化输入输出API(转)
原文链接:在Spark中自定义Kryo序列化输入输出API 在Spark中内置支持两种系列化格式:(1).Java serialization:(2).Kryo serialization.在默认情况 ...
- Java 序列化反序列化框架比较
文章目录 一.简介 二.序列化框架 1.JDK 2.XML序列化 3.JSON序列化 4.Hessian 5.Avro序列化 6.Kyro序列化 7.Protostuff 三.序列化框架对比测试 1. ...
最新文章
- 常用服务器返回码意义
- mysql中的函数有哪些?(2.控制流函数)
- C++ 判断类是否有某变量
- SQL Server触发器创建、删除、修改、查看示例步骤
- Mysql中实现多表关联查询更新操作
- centos mysql proxy_在Centos 5.2下安装最新的MySQL Proxy
- Linux复习-vi编辑器
- MAC地址及对应的厂商
- ubuntu18.04下opencv用CPU编译全过程
- 「 软件安装 」嵌入式开发Keil5安装教程
- 完美数c语言程序_C中的完美数
- C#写简单HTML报表
- 如何在手机上新建html文件夹,用手机怎么制作网页
- 小学计算机机器人大赛,2019年花都区中小学电脑机器人竞赛活动
- 【信源编码技术】实验1-浊音清音爆破音的时域及频域特性分析
- linux双线路由,双线机房双IP linux设置路由
- 他只靠写代码,登上了胡润富豪榜!
- AM5728调试经历
- Skype应用将在7月1日停止支持Windows Phone 8/8.1等系统
- 李宏毅机器学习2022 HW1
热门文章
- JAVA题目 写一个收费站类_Java综合题目
- 凝聚式层次聚类 java_凝聚法层次聚类之ward linkage method
- java reducebykey_Spark入门(五)--Spark的reduce和reduceByKey
- 新手坐高铁怎么找车厢_一个新手怎么做直播卖衣服?找对货源供应商成功一半...
- 北京大学药学院张亮仁教授/刘振明研究员课题组博士后招聘启事
- Linux学习 - sed使用
- macOS Big Sur11.2发布候选版更新:修复蓝牙和显示连接问题
- 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
- GIT上传下载报错:[You do not have permission to pull from the repository]的解决方案!
- c语言第一章节测试,计算机二级C语言教程章节测试:字符串