基于Protobuf C++ serialize到char*的实现方法分析

 更新时间:2020年4月25日 17:47  点击:2303

protobuf的Demo程序是

C++版本的protubuf有几种serialize和unSerialize的方法:

方法一:

官方demo程序采用的是

复制代码 代码如下:

 // Write the new address book back to disk.

    fstream output(argv[1], ios::out | ios::trunc | ios::binary);

    if (!address_book.SerializeToOstream(&output)) {

      cerr << "Failed to write address book." << endl;

      return -1;

    }

 

 // Read the existing address book.

    fstream input(argv[1], ios::in | ios::binary);

    if (!input) {

      cout << argv[1] << ": File not found.  Creating a new file." << endl;

    } else if (!address_book.ParseFromIstream(&input)) {

      cerr << "Failed to parse address book." << endl;

      return -1;

    }


上面采用的是fstream,把数据序列(反序列)打磁盘文件中。

 

而如果想序列到char *,并且通过socket传输,则可以使用:

方法二:

复制代码 代码如下:

int size = address_book.ByteSize();

void *buffer = malloc(size);

address_book.SerializeToArray(buffer, size);

方法三:

复制代码 代码如下:

使用ostringstream ,

std::ostringstream stream;

address_book.SerializeToOstream(&stream);

string text = stream.str();

char* ctext = string.c_str();

[!--infotagslink--]

相关文章

  • Protobuf的简要介绍及使用详解

    这篇文章主要介绍了Protobuf的简要介绍及使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-14
  • protobuf对象二进制序列化存储(详解)

    下面小编就为大家带来一篇protobuf对象二进制序列化存储(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用

    这篇文章主要介绍了jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用的相关资料,需要的朋友可以参考下...2016-01-25
  • jquery.serialize() 函数语法及简单实例

    下面小编就为大家带来一篇jquery.serialize() 函数语法及简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-07-25
  • C# protobuf自动更新cs文件

    这篇文章主要介绍了C# protobuf自动更新cs文件的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C语言中判断一个char*是不是utf8编码

    这篇文章主要介绍了C语言中判断一个char*是不是utf8编码的相关资料,需要的朋友可以参考下...2020-04-25
  • 基于Protobuf C++ serialize到char*的实现方法分析

    本篇文章是对Protobuf C++ serialize到char*的实现方法进行了详细的分析介绍。需要的朋友参考下...2020-04-25
  • Android中XmlSerializer生成xml文件

    在安卓手机开发中生成xml文档的文章相对来说比较少,下面我来介绍利用XmlSerializer在安卓中生成xml文档的方法,有需要了解的朋友可参考。 例1 代码如下 ...2016-09-20
  • php中magic_quotes_gpc对unserialize的影响

    magic_quotes_gpc是一个php中一个给单双引号增加一些安全过滤的函数,但此函数对于我使用unserialize函数时会产生一些影响,下面我就就这个问题与大家看几个实例与解决办...2016-11-25
  • C++中char[]能修改char*却不行

    本文主要介绍了C++中char[]能修改char*却不行,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-13
  • 详解C# Protobuf如何做到0分配内存的序列化

    这篇文章主要介绍了详解C# Protobuf如何做到0分配内存的序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • php序列化serialize() 与反序列化unserialize()

    本文章以php中serialize() 和 unserialize()函数来引出我们在正常开发应用中对于序列化使用方法与使用序列化时的一些安全问题,希望对各位会带来帮助 把复杂的数据...2016-11-25
  • Netty结合Protobuf进行编解码的方法

    这篇文章主要介绍了Netty结合Protobuf进行编解码,通过文档表述和代码实例充分说明了如何进行使用和操作,需要的朋友可以参考下...2021-06-26
  • SpringBoot使用protobuf格式的接口方式

    这篇文章主要介绍了SpringBoot使用protobuf格式的接口方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-30
  • php提示PHP class x has no unserializer解决办法

    在我们使用php缓存技术时会出现提示PHP class x has no unserializer 下面我们来介绍一下关于这个问题的办法。 PHP已经出到了5.3.8稳定版本,于是乎准备将公司生产...2016-11-25
  • PHP serialize与 unserialize实用说明

    serialize — 产生一个可存储的值的表示 unserialize — 从已存储的表示中创建 php教程 的值 想要将已序列化的字符串变回 php 的值,可使用 unserialize()。...2016-11-25
  • php安全攻防世界unserialize函数反序列化示例详解

    这篇文章主要介绍了php的安全防护,关于攻防世界Web php unserialize正则表达式反序列化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-10-14
  • phpunit遇到You cannot serialize or unserialize PDO instances

    下面我们来看一篇关于phpunit遇到You cannot serialize or unserialize PDO instances问题的解决方案,具体的如下所示。 globalsBackup causes: PDOException: You...2016-11-25
  • C#语言使用gRPC、protobuf(Google Protocol Buffers)实现文件传输功能

    这篇文章主要介绍了C#语言使用gRPC、protobuf(Google Protocol Buffers)实现文件传输功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-12-08
  • 如何为asp.net core添加protobuf支持详解

    这篇文章主要给大家介绍了关于如何为asp.net core添加protobuf支持的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。...2021-09-22