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

nbzdwan777

nbzdwan777

2016-02-19 09:26

下面请跟着图老师小编一起来了解下基于Protobuf C++ serialize到char*的实现方法分析,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

protobuf的Demo程序是

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

方法一:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

官方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);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

address_book.SerializeToArray(buffer, size);

方法三:
代码如下:

使用ostringstream ,

std::ostringstream stream;

address_book.SerializeToOstream(&stream);

string text = stream.str();

char* ctext = string.c_str();

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
基于Protobuf C++ serialize到char*的实现方法分析

基于C语言char与unsigned char的区别介绍

编程语言 网络编程
基于C语言char与unsigned char的区别介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

基于C/C++ 常见误区详解

编程语言 网络编程
基于C/C++ 常见误区详解

c++大数阶乘的实现方法

编程语言 网络编程
c++大数阶乘的实现方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

基于C++执行内存memcpy效率测试的分析

编程语言 网络编程
基于C++执行内存memcpy效率测试的分析

C++中const的实现机制深入分析

编程语言 网络编程
C++中const的实现机制深入分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

睫毛下旳雾水 - QQ伤感分组

睫毛下旳雾水 - QQ伤感分组

PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法

PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法
下拉加载更多内容 ↓