2015-01-31 8 views
-1

Я пытаюсь отобразить точное слово после другого слова, которое имеет 8 символов. К сожалению, там отображается ошибка, связанная с индексом строки вне диапазона. Я знаю, что проблема связана с циклом, но я не знаю, как его решить. Почему «линия [J]! =„(“» Dosen't работа?строка индекс вне диапазона

getline(myFile, line); 
size_t pos = line.find(arrayTypeOne[i]); //finding position 
if (pos != string::npos) 
{ 
    for (int j = pos + 9; line[j] != '('; j++) 
     cout << line[j]; 
}//if 

я решил. Проблема была в другом месте. Мне очень жаль, я думаю, дважды в следующий раз. Спасибо за помощь

+3

Вы понимаете, что нет ничего, ограничивающего переменную 'j' от прохождения конца строки. –

+1

Используя ручку и бумагу, возьмите случай с 10-символьной строкой и переменная 'pos' будет установлена ​​в 0. Кроме того, строка не имеет '(' в ней. –

+0

Я делаю, но знак" («находится в строке (моя строка) в 21 позиции, а затем он должен разорвать цикл – mathsicist

ответ

0

существует возможный шанс, что нет «(» в строке. в этом случае вы держите приращение переменной j без проверки, если переменная j прошла мимо line.length().

I предложите добавить условие и, где вы проверяете, j проходит по длине строки.

Редактировать 1: Поиск снова Можете ли вы обойтись без цикла и использования:

line.find('(', pos + 1); 
+0

Но есть моя строка: \t INSTANCE Schutzring_Geschosse2 (C_Item) – mathsicist

+0

Затем используйте отладчик, чтобы узнать, почему он не терпит неудачу. Подсказка: добавьте оператор печати в цикле, который выводит значение 'j' и длину строки. –

+0

Если есть« («точно в кратных 9 где-то в вашей строке, то это должно быть wo rk .... Но, как было предложено, это может быть в какой-то другой позиции ... Разве это ровно кратное 9? – basav

0

я должен извиняться вас, потому что я не говорил, что знак «)» всегда в строке, если условие «pos! = string :: npos» истинно. Я попытался изменить свой код, используя

j < line.find('(', pos + 1) 

, но он по-прежнему не работает. @basav: девять - это количество символов внутри «экземпляра» + пробел

Смежные вопросы