源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-02-16 10:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于Protobuf C++ serialize到char*的实现方法分析
protobuf的Demo程序是 C++版本的protubuf有几种serialize和unSerialize的方法: [b]方法一:[/b] 官方demo程序采用的是
[u]复制代码[/u] 代码如下:
 // 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传输,则可以使用: [b]方法二: [/b]
[u]复制代码[/u] 代码如下:
int size = address_book.ByteSize(); void *buffer = malloc(size); address_book.SerializeToArray(buffer, size);
[b]方法三: [/b]
[u]复制代码[/u] 代码如下:
使用ostringstream , std::ostringstream stream; address_book.SerializeToOstream(&stream); string text = stream.str(); char* ctext = string.c_str();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部