2013-10-11 3 views
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(); 
} 

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

ответ

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; 
Смежные вопросы