std::string присваивание через индекс не работает
В с ++
когда я заявляю
string string1;
тогда я не могу назначить по индексу, как в
string1[0] = 'x';
однако, если я сначала поставлю string1 = "somestring"; тогда я могу использовать назначение через индекс.
string = "";
не работает
поэтому мне интересно, почему это так. Я думал, что std::string должен иметь функциональность индекса.
2 ответа
Когда вы по умолчанию создаете строку, она пуста. Там нет элементов, его массив символов, так что [0]
не существует Если вы создаете его, давая ему строку, как "somestring"
, она содержит эту строку и нулевой индекс s
,
Когда у тебя есть string string1;
вы объявляете пустую строку. Вы должны присвоить ему значение, прежде чем сможете получить доступ к символу строки через индекс.
Он не создаст для вас индекс 0 пустой строки string1[0] = 'x';
Это, однако, позволит вам изменить значение с индексом 0, если в строке уже есть символы.
Вы можете создать предварительно выделенную строку с помощью конструктора:string (size_t n, char c);
где n
количество символов для копирования и c
символ для заполнения строки. Так, например, вы могли бы иметь std::string string1(5, ' ');
который бы создал строку, заполненную 5 пробелами. Затем вы можете использовать любой индекс от 0 до 4, чтобы поместить другие значения в строку (как в вашем первоначальном вопросе - string1[0] = 'x';
). http://www.cplusplus.com/reference/string/string/string/