http://blog.csdn.net/sealyao/article/details/6940245

1、C数组的序列化和反序列化API

  1. //C数组的序列化和序列化API
  2. bool ParseFromArray(const void* data, int size);
  3. bool SerializeToArray(void* data, int size) const;
  4. //使用
  5. void set_people()
  6. {
  7. wp.set_name("sealyao");
  8. wp.set_id(123456);
  9. wp.set_email("sealyaog@gmail.com");
  10. wp.SerializeToArray(parray,256);
  11. }
  12. void get_people()
  13. {
  14. rap.ParseFromArray(parray,256);
  15. cout << "Get People from Array:" << endl;
  16. cout << "\t Name : " <<rap.name() << endl;
  17. cout << "\t Id : " << rap.id() << endl;
  18. cout << "\t email : " << rap.email() << endl;
  19. }

2、C++ String的序列化和反序列化API

  1. //C++string序列化和序列化API
  2. bool SerializeToString(string* output) const;
  3. bool ParseFromString(const string& data);
  4. //使用:
  5. void set_people()
  6. {
  7. wp.set_name("sealyao");
  8. wp.set_id(123456);
  9. wp.set_email("sealyaog@gmail.com");
  10. wp.SerializeToString(&pstring);
  11. }
  12. void get_people()
  13. {
  14. rsp.ParseFromString(pstring);
  15. cout << "Get People from String:" << endl;
  16. cout << "\t Name : " <<rsp.name() << endl;
  17. cout << "\t Id : " << rsp.id() << endl;
  18. cout << "\t email : " << rsp.email() << endl;
  19. }

3、文件描述符序列化和反序列化API

  1. //文件描述符的序列化和序列化API
  2. bool SerializeToFileDescriptor(int file_descriptor) const;
  3. bool ParseFromFileDescriptor(int file_descriptor);
  4. //使用:
  5. void set_people()
  6. {
  7. fd = open(path,O_CREAT|O_TRUNC|O_RDWR,0644);
  8. if(fd <= 0){
  9. perror("open");
  10. exit(0);
  11. }
  12. wp.set_name("sealyaog");
  13. wp.set_id(123456);
  14. wp.set_email("sealyaog@gmail.com");
  15. wp.SerializeToFileDescriptor(fd);
  16. close(fd);
  17. }
  18. void get_people()
  19. {
  20. fd = open(path,O_RDONLY);
  21. if(fd <= 0){
  22. perror("open");
  23. exit(0);
  24. }
  25. rp.ParseFromFileDescriptor(fd);
  26. std::cout << "Get People from FD:" << endl;
  27. std::cout << "\t Name : " <<rp.name() << endl;
  28. std::cout << "\t Id : " << rp.id() << endl;
  29. std::cout << "\t email : " << rp.email() << endl;
  30. close(fd);
  31. }

4、C++  stream 序列化和反序列化API

    1. //C++ stream 序列化/反序列化API
    2. bool SerializeToOstream(ostream* output) const;
    3. bool ParseFromIstream(istream* input);
    4. //使用:
    5. void set_people()
    6. {
    7. fstream fs(path,ios::out|ios::trunc|ios::binary);
    8. wp.set_name("sealyaog");
    9. wp.set_id(123456);
    10. wp.set_email("sealyaog@gmail.com");
    11. wp.SerializeToOstream(&fs);
    12. fs.close();
    13. fs.clear();
    14. }
    15. void get_people()
    16. {
    17. fstream fs(path,ios::in|ios::binary);
    18. rp.ParseFromIstream(&fs);
    19. std::cout << "\t Name : " <<rp.name() << endl;
    20. std::cout << "\t Id : " << rp.id() << endl;
    21. std::cout << "\t email : " << rp.email() << endl;
    22. fs.close();
    23. fs.clear();
    24. }

ProtoBuf 常用序列化/反序列化API 转的更多相关文章

  1. 序列化反序列化api(入门级)

    定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...

  2. java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子

    目录 背景 测试 环境 工具 说明 结果 结论 xstream简单教程 准备 代码 protobuf简单教程 快速入门 下载.exe编译器 编写.proto文件 利用编译器编译.proto文件生成ja ...

  3. 序列化 反序列化 MessagePack for C#

    阅读目录 快速序列化组件MessagePack介绍 简介 使用 快速开始 分析器 内置的支持类型 对象序列化 DataContract兼容性 序列化不可变对象(序列化构造器) 序列化回调 Union ...

  4. python: 序列化/反序列化及对象的深拷贝/浅拷贝

    一.序列化/反序列化 python中内置了很多序列化/反序列化的方式,最常用的有json.pickle.marshal这三种,示例用法如下: import json import pickle imp ...

  5. 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\

    1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...

  6. 5) ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

    一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ​ # ...

  7. python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理

    python_way.day5 1.模块3 time,datetime, json,pickle 2.双层装饰器 3.字符串格式化 4.生成器 5.递归 6.模块倒入 7.第三方模块倒入 8.序列化反 ...

  8. springboot学习(三)——http序列化/反序列化之HttpMessageConverter

    以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...

  9. java序列化反序列化深入探究(转)

    When---什么时候需要序列化和反序列化: 简单的写一个hello world程序,用不到序列化和反序列化.写一个排序算法也用不到序列化和反序列化.但是当你想要将一个对象进行持久化写入文件,或者你想 ...

随机推荐

  1. django自定义Admin actions

    通常情况下,admin的工作模式是“选中目标,然后修改目标”,但在同时修改大量目标的时候,这种模式就变得重复.繁琐. 为此,admin提供了自定义功能函数actions的手段,可以批量对数据进行修改. ...

  2. BMP操作_测试

    1.参考网址: http://blog.sina.com.cn/s/blog_678b377a0100mlyb.html http://blog.csdn.net/weiyongtao87/artic ...

  3. ubuntu18+gtx1060 +cuda9+cudnn-v7+opencv3.1.0 配置深度学习环境

    将笔记本的ubuntu系统更新到18版本后重新配置深度学习环境,在此记载方便日后参考 具体配置为 Ubuntu18.04+gtx1060+opencv-3.1 第1步 安装依赖包 sudo apt-g ...

  4. Python + Selenium WebDriver Api 知识回顾

    一直再用 Selenium WebDriver 但是用的都比较零散,也没有做过总结,今天借此机会,整理一下,方便大家使用时查阅 webDriver  的属性 ['CONTEXT_CHROME', 'C ...

  5. idataway盐城

    地点的经纬度.

  6. 第 8 章 容器网络 - 059 - 安装配置 flannel

    安装配置 flannel 1) build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build. 不过用于做 build ...

  7. SQL语句内做除法得出百分比

    保留两位小数点 SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) * 100 FROM TB; 不保留 SELECT CAST(field1 AS FLOA ...

  8. Servlet 小知识

    1.In servlet 3.0 we have new feature annotations to replace XML.也就是说应该尽量使用annotations Servlet is an ...

  9. Java Config for WebProject

    1.Java EE vs Java SE They are just official SDK,when using IDE,it's ok to just install jdk/jre. &quo ...

  10. Xpath做数据解析

    xpath是一个路径表达式, xpath学习 (1)xpath节点 在XPath中,有七种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档节点:XML文档是被作为节点树来对待的.树的根被 ...