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/

Другие вопросы по тегам