C ++ Google Protocol Buffers:将二进制流分配给protobuf对象

时间:2012-02-07 09:57:51

标签: c++ protocol-buffers

我有以下protoc文件:

message DataChunk{
    required bool isHash=1;
    required int64 hash=2;
    required string data=3;
}

message responseBody{
    repeated DataChunk dataChunk=1;
}

我有以下C ++功能:

void eamorr(string data){   //data is a protocol buffer stream converted to a string
    responseBody rb;

    rb=some_function_of(data);   //what to do here?
}

字符串“data”是使用:

创建的
...
std::ostringstream stream;
rb.SerializeToOstream(&stream);
string protobufStream = stream.str();
...

我的问题是:如何将字符串转换为protoc对象,以便我可以访问成员元素?请记住,我对C ++很新。

2 个答案:

答案 0 :(得分:2)

创建数据对象时,为什么不:

responseBody rb; //this is your proto object;
rb.SerializeToString(&data);

然后进行反序列化:

void eamorr(string data){
    responseBody rb;
    rb.ParseFromString(data);
}

答案 1 :(得分:2)

您可以使用

rb.ParseFromString(data)