国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 阳城县| 广宁县| 育儿| 舒兰市| 阿巴嘎旗| 商城县| 兴安县| 萝北县| 赤水市| 开化县| 永安市| 七台河市| 柳江县| 姚安县| 旬阳县| 浪卡子县| 温宿县| 南宁市| 阿克苏市| 龙海市| 龙游县| 防城港市| 东台市| 邻水| 上饶县| 铅山县| 米脂县| 明星| 宽甸| 蓝山县| 彰化县| 寿宁县| 彭阳县| 滨州市| 金沙县| 林芝县| 景洪市| 中山市| 龙井市| 大名县| 浮梁县|