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. OMShell常用命令及遇到的问题

    仿真并画图: loadModel(Modelica); loadFile ("C:/Users/wen/Desktop/TCS.mo"); simulate(TCS.TCS,sta ...

  2. easyUI tree 自定义图标

    文章转载自: https://blog.csdn.net/zhlantian/article/details/52913115 近期由于项目中需要使用easyui tree树形列表,并在系统中动态配置 ...

  3. lua --- 函数的本质

    1.lua中的函数是带有此法界定的第一类值. 2.创建一个函数的过程,本质上就是一个创建赋值语句的过程. 常见的创建函数的过程: function fun() print("Hello wo ...

  4. Axure 动态面板的状态与尺寸

    知识点: 1.动态面板的状态下相当动态面版的模式,当符合某种条件的话就选择对应的动态面板的状态 2.动态面板的尺寸可以根据内容自动调整大小 本节教程主要分为一下图片两种场景: 出现动态面板中的两种.一 ...

  5. Linux中sudo的用法

    一.用户在/etc/sudoers文件中的写法语法规则:授权用户 主机=命令动作 这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用括号括起来,如果不需要密码直接运行 ...

  6. linux文件管理之管道与重定向

    ============================================================== 内容提要: 输入输出重定向.管道: 重定向的作用: 文件描述符 0 1 2 ...

  7. canvas学习之粒子动画

    项目地址:http://pan.baidu.com/s/1ccTptc 粒子动画意思就是把一个图片粒子画,然后使用粒子作出动画效果,主要两个问题:一个图片如何粒子化,这里面我们使用canvas的get ...

  8. inflate()引发NullPointerException

    有时候我们在infalete的时候明明什么都对为什么它会提示出错 原意是你的资源layout出错了 注意看有没有把View写成view 这个View应该大写!V而不是小写v 踩坑踩了两次了!上次以为是 ...

  9. 架构探险笔记12-安全控制框架Shiro

    什么是Shiro Shiro是Apache组织下的一款轻量级Java安全框架.Spring Security相对来说比较臃肿. 官网 Shiro提供的服务 1.Authentication(认证) 2 ...

  10. python记录_day11 闭包 迭代器

    一.第一类对象: 函数名是一个变量,可以当普通变量使用,但它又是一个特殊的变量,与括号配合可以执行函数. 函数名的运用 1.单独打印是一个内存地址 2.可以给其他变量赋值 3.可以作为容器类变量的元素 ...