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. 日期时间函数 mysql 和sqlserver 中对于常用函数的日期和时间函数的区别

    1. sqlserver中获取时间用getdate(),默认返回格式是2019-01-21 13:58:33.053,具体的年月日,时分秒毫米,年月日之间用短线连接,时分秒之间用冒号连接,秒和毫米之间 ...

  2. Codeforces 1005 E2 - Median on Segments (General Case Edition)

    E2 - Median on Segments (General Case Edition) 思路: 首先我们计算出solve(m):中位数大于等于m的方案数,那么最后答案就是solve(m) - s ...

  3. myeclipse新建maven项目

    右键 new--->project   ---->maven project 出现bank 右键点击bank---->maven4Myeclipse---->new maven ...

  4. Backup and Recovery Types

    Physical(Raw) and Logical Backup: 1.Physical backups consist of raw copies of the directories and fi ...

  5. 如何通过ssh远程登录内网的Mac和Linux系统?

    神器:ngrok 用法很简单,安装后 验证授权: ./ngrok authtoken 3WWujp1TEtHRo6rphEi5Y_7MBqGWm9yThCSFyqEHgip 在内网开启tcp服务 ng ...

  6. BroadcastReceiver(广播)的静态注册和动态注册 --Android开发

    BroadcastReceiver是安卓四大组件之一,本例通过代码的方式演示静态注册和动态注册. 1.静态注册 静态注册只需要AndroidManifest.xml中进行配置: AndroidMani ...

  7. Okhttp 插入缓存拦截器 解析

    我们在做网络请求的时候,如果网络请求过于频繁而且请求的数据变动不大,或者基本没有变动,这个时候如果没有缓存功能,我们想一下 会浪费掉多少资源,一次请求刷新一次,去请求一次,不但会消耗用户的流量,而且还 ...

  8. A strange lift HDU - 1548

    There is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 ...

  9. 【洛谷p1601】A+B Problem(高精)

    高精度加法的思路还是很简单容易理解的 A+B Problem(高精)[传送门] 洛谷算法标签: 附上代码(最近懒得一批) #include<iostream> #include<cs ...

  10. ImportError: sys.meta_path is None, Python is likely shutting down

    python执行过错中,报错:ImportError: sys.meta_path is None, Python is likely shutting down 解决方法:在C:\Users\Adm ...