Почему при отладке приведенного ниже кода появляется ошибка «строковый индекс вне диапазона»

#c

#c

Вопрос:

Вот код. Я получаю ошибку «строковый индекс вне диапазона» при отладке приведенного ниже кода. Поэтому, пожалуйста, найдите, где ошибка, и решение.

 #include <iostream>
using namespace std;

int main()
{
    string s;
    int i = 0;
    for (int i = 0; i < 50; i  )
        s[i] = 'A';
    cout << s;
    return 0;
}
  

Ответ №1:

Проблема в том, что s[i] = 'A'; меняется символ в позиции i, но строка пуста, и в этой позиции нет символа. Что вы хотите сделать, так это добавить новый символ к строке, подобной этому s = 'A'; или s.push_back('A'); .

Комментарии:

1. Или string заранее инициализируйте размер, string s(51, ''); или string s; s.resize(51); , тогда исходный цикл будет работать.