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. NativeWindow_02_DialogBoxParam_VC6

    PS: 代码参考于<<Windows环境下32位汇编语言程序设计.chm>>,第5章,"5.4 对 话 框(2)" . ZC: 与CreateWindow( ...

  2. SQL中 根据行号设置每行数据的排序数值

    根据行号自动把当前行号插入到某列中 实现排序 update tempTable set DisplayOrder = right( CAST(rownum as NVARCHAR),5) from(  ...

  3. HDUOJ 不容易系列之(4)——考新郎

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2049 一开始我的想法就是使用错排公式,先使用全排列从N对中选出M对,然后再使用错排对选出的M对进行错排计 ...

  4. JAVA基础知识总结:十三

    测试用一个字符串常量创建一个字符串对象 1.获取这个字符串的长度 2.获取任意长度的子串 3.判断这个字符串是否为空 4.将这个字符串中的小写字母转化为大写字母 5.获取某个字符在字符串中第一次出现的 ...

  5. vue-循环标记列表元素

    <el-col :lg="4" class="list" v-for="(item,index) in picList"> &l ...

  6. jq 折面板+tab切换(自己封装的插件哦!!)

    如上图所示的一个折面板效果+tab切换:最重要的js代码如下: 对于布局简单介绍下: hot_wrap_li 这个是带箭头的横条: Arrow 这个是箭头的div:hot_wrap_li_wrap 这 ...

  7. lua --- 局部变量

    1.block(代码块) --- 一个控制结构.一个函数体.一个chunk   chunck --- 变量被声明的那个文件或者文本串 2.局部变量只在声明的那个block中有效 3.可以使用 do . ...

  8. HTML 第十二章总结

    HTML5 markup 前言 在这一章中,讲解了新的 HTML5 的一些 markup,并且对其中的<video>进行了很详细的讲解. New HTML5 elements 列表如下: ...

  9. 20165303 预备作业3 Linux安装及学习

    =20165303 预备作业3 Linux安装及学习 安装虚拟机 按照http://www.cnblogs.com/rocedu/p/6012545.html步骤进行逐步操作,安装虚拟机. 遇到的问题 ...

  10. English Voice of <<Beautiful now>>

    Beautiful Now  -Zedd & Jon Bellion I see what you're wearing, there's nothing beneath it 我看见了你身着 ...