我有以下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 ++很新。
答案 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)