строковый индекс вне диапазона ошибок

0

Эй, у меня проблема с этим кодом. Я прочитал некоторые вопросы об этом, но я не могу найти проблему в своем коде. Помогите мне, если вы можете парни.

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

int main()
{

    cout << "You have 20 attempts";
    string slowo="program";
    char litera;
    unsigned j=0;

    for(int i=0;i<20;i++)
    {
        if (j > slowo.size())j=0;

        litera = _getch();
        for(unsigned z=0;z < slowo.size();z++)
        {
            if (litera==slowo[j])
            {
                cout << slowo[j];
                break;
            }
            else cout << "-";
        }
        //cout << litera;

            j++;
    }getch();
}

Я забыл про эту мелочь со строкой, когда у меня нет массива.

Теги:
string

2 ответа

3
Лучший ответ

Вы читаете индекс slowo.size() в slowo, но подписываете его на 0, поэтому slowo может индексироваться только с 0 на slowo.size()-1. Вам нужно изменить свое состояние на

if (j >= slowo.size())j=0;
1

Когда строка имеет длину 4, это означает, что есть символы в индексах 0, 1, 2, 3, т.е. size() - 1. Таким образом:

if (j > slowo.size()) j=0;

должно быть:

if (j >= slowo.size()) j=0;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню