关于在Protocol Buffers中使用Message :: ParseFromIstream感到困惑

时间:2017-11-25 13:19:51

标签: c++ protocol-buffers

我收到的数据为unsigned char*,其中包含一个字节数组。

unsigned char* byteptr = static_cast<unsigned char*>(msg.data());

我想初始化我的协议缓冲区,这是一个地址簿。我认为最好的匹配是使用ParseFromIstream如下:

my_address_book.ParseFromIstream()

关于字节数组,即unsigned char*。由于在编译时不知道字节数组的长度,因此有两个选项:

选项1.可变长度数组

unsigned char bytearray[msg.size()];
std::copy(byteptr, byteptr + msg.size(), bytearray);

选项2.动态分配数组并在完成后将其删除

unsigned char* bytearray = new unsigned char [msg.size()];
std::copy(byteptr, byteptr + msg.size(), bytearray);

我有以下问题:

  1. 如果ParseFromIstream
  2. ,如何使用unsigned char*
  3. 考虑到更好的性能(快速执行速度)是优先考虑的,哪个选项在上述两个中最佳?

0 个答案:

没有答案