簡體   English   中英

在協議緩沖區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 ++程序中獲取數據。 我創建了一個proto文件:

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 ++的適當類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM