Как получить завершающий символ NUL \ x00 в строку? - PullRequest
2 голосов
/ 24 мая 2011

Как получить строку с нулевым символом \ x00, поскольку \ x00 также является завершающим символом?

Мне действительно нужно это для части моей программы.

Строка Iнужно это "\ x00 \ x00 \ x00 \ x00".Есть ли какой-то особый синтаксис для этого?Что это?

Ответы [ 5 ]

8 голосов
/ 24 мая 2011

В C ++ класс std::string будет работать с включением символов NUL.

Однако:

  • Функция c_str() завершится ошибкой.
  • Конструкторыпри чтении const char* произойдет сбой.

Возможно, вам лучше будет использовать std::vector<char>.

2 голосов
/ 24 мая 2011
std::string str("\0\0\0\0", 4);

Этот конструктор указывает строке использовать первые 4 символа символа *, не интерпретируя символы \ 0 как ноль.

2 голосов
/ 24 мая 2011

Если это стандартная строка, которую вы хотите, вы можете получить любой размер

std::string s(10, '\0');

дает вам строку с 10 нулевыми символами.

2 голосов
/ 24 мая 2011

Вы можете иметь "нормальную" строку, которая содержит нули, но при первом значении null любая функция, которая ожидает строку с нулевым символом в конце, прекратит ее обработку; Таким образом, вам нужно использовать подсчитанные строки.

C ++ std::string является типом счетной строки, вы можете использовать его для переноса этих строк. Имейте в виду, однако, что вы не должны преобразовывать его обратно в строку C при его использовании (т.е. не используйте метод c_str()), в противном случае вы вернетесь к исходной точке.

Однако, чтобы получить более конкретные предложения, вам следует немного лучше объяснить, чего вы пытаетесь достичь.

2 голосов
/ 24 мая 2011

Вы делаете это правильно. Вам просто нужно избегать интерпретации ноль в качестве конечного символа.

Но тогда как вы узнаете, где это заканчивается? Я не знаю; Вы можете хранить длину где-нибудь вместо этого.

...