Ответ 1
Реализация буферов протокола С++ возвращает байтовые и строковые типы как std::string
. Эта структура содержит функцию длины, сообщающую вам, сколько времени соответствующие данные (а также сами данные). Таким образом, нет особого значения встроенных символов \0
.
Функции настройки принимают строку также, или существуют версии, которые принимают буфер и длину. Если вы хотите установить поле, вы можете просто сделать это:
pb.set_foo( std::string( data, data_length ) );
или
pb.set_foo( data, data_length );