C++ 在协议缓冲区中使用Message::ParseFromIstream时感到困惑
我以C++ 在协议缓冲区中使用Message::ParseFromIstream时感到困惑,c++,protocol-buffers,C++,Protocol Buffers,我以无符号字符*的形式接收数据,其中包含一个字节数组 unsigned char* byteptr = static_cast<unsigned char*>(msg.data()); 关于字节数组,即无符号字符*。由于字节数组的长度在编译时未知,因此有两个选项: 备选案文1。可变长度数组 unsigned char bytearray[msg.size()]; std::copy(byteptr, byteptr + msg.size(), bytearray); 备选案文2。
无符号字符*
的形式接收数据,其中包含一个字节数组
unsigned char* byteptr = static_cast<unsigned char*>(msg.data());
关于字节数组,即无符号字符*
。由于字节数组的长度在编译时未知,因此有两个选项:
备选案文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);
我有以下问题:
无符号字符*
,如何使用ParseFromIstream
my_address_book.ParseFromArray(msg.data(), msg.size())
根本不需要将数据复制到新数组。您应该使用,它接受指针和大小:
my_address_book.ParseFromArray(msg.data(), msg.size())
根本不需要将数据复制到新数组。
Message
继承自MessageLite
,因此。选中ParseFromString
,并使用最符合您的情况的字符串。Message
继承自MessageLite
,因此。检查ParseFromString,并使用最符合您情况的。我将尝试您的建议,并尽快告知结果。非常感谢。我会尝试你的建议,并尽快告诉你结果。非常感谢你。