在协议缓冲区 c++ 中反序列化字符串数组
Deserialize string arrays in protocol buffer c++
我正在将一个包含 2 个字符串数组的对象从 C# 程序发送到带有 rabbitmq 的C++程序。C# 程序中的类如下所示:
namespace LPRRabbitMq.Class
{
[ProtoContract(SkipConstructor = true)]
public class BlackAndWhiteList
{
[ProtoMember(1)]
public string[] BlackList { get; set; }
[ProtoMember(2)]
public string[] WhiteList { get; set; }
}
}
用于在C# 中序列化对象的代码:
byte[] data;
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, blackAndWhite);
data = ms.ToArray();
}
现在我想在C++程序中获取数据。我创建了一个原型文件:
syntax = "proto2";
package Protobuf;
message BlackAndWhiteList {
optional bytes BlackList = 1;
optional bytes WhiteList = 2;
}
我在C++程序上收到消息,但是如何反序列化数据以及如何最终将每个字符串数组保存在单独的数组中?
你最好的办法是让图书馆帮助你:
var proto = Serializer.GetProto<BlackAndWhiteList>(ProtoSyntax.Proto2);
这为您提供:
syntax = "proto2";
package LPRRabbitMq.Class;
message BlackAndWhiteList {
repeated string BlackList = 1;
repeated string WhiteList = 2;
}
这告诉你如何最好地表示它。通过在此处使用repeated
,您应该能够正确识别C++代码中的各个元素。通过使用string
,它应该作为适合C++的类型出现。
相关文章:
- 如何知道QDataStream不能反序列化某些内容
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 如何反序列化数组?
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 通过 tcp 发送 C# 类并在 C++ 上反序列化
- 序列化和反序列化boost共享指针
- 在C++中使用POCO和grain对多个对象进行反序列化
- C++中整数向量的序列化/反序列化
- 使用 Json 转换器反序列化 WCF 服务中的C++字符串
- 使用 QDataStream 对原始数据进行反序列化
- 使用协议缓冲区创建通用反序列化程序
- 如何在C++中从头开始反序列化文件(没有库)
- 在协议缓冲区 c++ 中反序列化字符串数组
- 在进程的内存中序列化/反序列化
- 使用 Cereal 反序列化 JSON 字符串
- 如何在不使用任何第三方库的情况下在 c++ 中反序列化 json 字符串
- 无法序列化和反序列化 Qt/C++ 中的字符串堆栈
- 如何正确地反序列化字符串指针