Буферы протокола Google C ++: назначить двоичный поток объекту protobuf - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть следующий файл 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?
}

Строка "данные" была создана с использованием:

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

Мой вопрос: как мне преобразовать строку в объект protoc, чтобы я мог получить доступ к элементам-членам? Пожалуйста, имейте в виду, что я очень плохо знаком с C ++.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Вы можете использовать

rb.ParseFromString(data)
2 голосов
/ 07 февраля 2012

При создании объекта данных, почему бы не сделать:

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

Затем при десериализации:

void eamorr(string data){
    responseBody rb;
    rb.ParseFromString(data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...