У меня проблема, в которой размер строки выполняется с наличием символа '\0'
. Я искал все в SO и не мог получить ответ.Почему размер этой std :: string изменяется, когда символы изменены?
Это фрагмент.
int main()
{
std::string a = "123123\0shai\0";
std::cout << a.length();
}
Выходной сигнал в этом случае является
6
Где, как и той же программы с разными цифрами строки, имеющие вместо символов
int main()
{
std::string a = "123123\0123\0";
std::cout << a.length();
}
дает выход
8
Что именно происходит под капотом? Как изменилось поведение символа '\0'
?
Не помещайте пустые символы (\ 0) в строки, если у вас нет очень хорошей идеи, что вы делаете и почему! – pjc50
И если вам действительно нужны строки с нулевым завершением, вы захотите использовать 'std :: literals :: string_literals :: operator" "s' (C++ 14) или' std :: string (char * , size_t) '(не забудьте указать конечный нуль, если хотите). –
Обратите внимание, что ваша вторая строка заменяет «shai» (четыре символа) на «123» (три символа), поэтому будет разница даже без восьмеричной последовательности, упомянутой в принятом ответе. –