gpt4 book ai didi

c++ - 对在 Protocol Buffers 中使用 Message::ParseFromIstream 感到困惑

转载 作者:行者123 更新时间:2023-11-27 23:49:33 24 4
gpt4 key购买 nike

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

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

我想初始化我的 Protocol Buffer ,它是一个地址簿。我认为最好的匹配是使用 ParseFromIstream如下:

my_address_book.ParseFromIstream()

关于字节数组,即unsigned char*。由于字节数组的长度在编译时是未知的,所以有两种选择:

方案一、变长数组

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. 如何在 unsigned char* 的情况下使用 ParseFromIstream
  2. 考虑到更好的性能(更快的执行速度)是优先考虑的,以上两个选项中哪个选项最好?

最佳答案

你应该使用 ParseFromArray() ,它需要一个指针和一个大小:

my_address_book.ParseFromArray(msg.data(), msg.size())

根本不需要将数据复制到新数组。

关于c++ - 对在 Protocol Buffers 中使用 Message::ParseFromIstream 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com