Обычно, если вы хотите проанализировать протобуф из файла, вы должны убедиться, что вы открыли файл в двоичном режиме и затем вызвали ParseFromIstream
.
ParseFromArray
и ParseFromString
(которые отличаются только типом данных своего аргумента) используются для анализа protobuf, которые уже находятся в памяти. Возможно, вы захотите сделать это, если protobuf является только частью файла, и вы знаете, как извлечь байты. Если вы извлекаете (или читаете) байты как std::string
, вы можете использовать ParseFromString
, но большую часть времени вы будете использовать std::istream::read
для чтения двоичных файлов, и эта функция считывает данные в буфер (который является массивом char
). Затем вы должны вызвать ParseFromArray
с начальным адресом буфера (приведенным к void*
) и его длиной.