Подтвердить что ты не робот

Почему байты буфера протокола - это строка в С++?

буфер протокола говорит, что он может содержать произвольную последовательность байтов. но если мои данные содержат "\ 0", то как буфер протокола может кодировать все мои данные из строковой переменной.

4b9b3361

Ответ 1

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

Функции настройки принимают строку также, или существуют версии, которые принимают буфер и длину. Если вы хотите установить поле, вы можете просто сделать это:

pb.set_foo( std::string( data, data_length ) );

или

pb.set_foo( data, data_length );