国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

基于Protobuf C++ serialize到char*的實現(xiàn)方法分析

2020-01-26 16:15:32
字體:
供稿:網(wǎng)友

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,把數(shù)據(jù)序列(反序列)打磁盤文件中。

 

而如果想序列到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();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 秭归县| 磐石市| 策勒县| 敦化市| 定襄县| 公安县| 澄迈县| 东乡族自治县| 大同市| 灵川县| 长岛县| 宜章县| 鸡泽县| 景德镇市| 新巴尔虎左旗| 甘孜| 东乌珠穆沁旗| 马尔康县| 达尔| 甘泉县| 德钦县| 定南县| 浦县| 城步| 巩义市| 蒙自县| 梓潼县| 景德镇市| 河北省| 兴海县| 沙雅县| 河西区| 交城县| 丹阳市| 石城县| SHOW| 双柏县| 上蔡县| 饶阳县| 长葛市| 花莲县|