Я имею дело с буфером в памяти, который читается как protobuf. Мне нужно десериализовать это. Содержимое этого protobuf содержит строку, которая может содержать или не иметь нулевой символ внутри строки. Например, строка может быть примерно такой: «name \ 0first». Если у меня есть такой ввод, строка, которую я могу десериализовать, всегда выглядит как «имя», так как класс string выдает часть после нулевого символа.Protobuf: строка C++ с нулевыми символами внутри
Как получить доступ к полной строке в этом случае? Функция длины строки, очевидно, не помогает в этом случае.
Вы ошибаетесь - функция 'string :: length()' работает правильно, даже если строка std :: содержит NULL. Вы должны показать нам, что вы делаете сейчас, для доступа или печати этой строки, а затем мы можем показать вам, как правильно получить содержимое строки. – PaulMcKenzie
std :: string может принимать строки со встроенными символами NUL. – jbruni
@PaulMcKenzie: Я написал тривиальную тестовую программу: string s («name \ 0first»); cout << s << endl; cout << s.length() << endl; s.length() не показывает 9. Это 4. –