2016-08-02 6 views
0

Я использую Qt5.6, я пытаюсь использовать функцию QString lastIndexOf. Субъект данных содержит что-то вроде:Qt QString lastIndexOf не работает

156 + (28 * 4) + (14 * 9 * 2) 

Использование IndexOf:.

int intOpB = strLocalCopy.indexOf(ucOpenBracket); 

strLocalCopy содержит предметные данные и ucOpenBracket содержит '('

intOpB возвращается правильно и 6.

Затем я искал последнее вхождение ')':

int intClB = strLocalCopy.lastIndexOf(ucCloseBracket, (++intOpB)); 

Использование intOpB в качестве ссылки, но lastIndexOf всегда возвращает -1 в intClB, почему?

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

Если я удаляю второй параметр, он работает, но я не понимаю, почему он не работает с предоставленным параметром.

ответ

0

Из Documentation:

Int QString :: LastIndexOf (Const QString & ул, внутр от = -1, Qt :: CaseSensitivity CS = Qt :: CaseSensitive) Const

Возвращает индексная позиция последнего вхождения строки str в эта строка, отыскивающая назад из позиции индекса. Если from is -1 (по умолчанию), поиск начинается с последнего символа; если от -2 до следующего символа и так далее. Возвращает -1, если str не найдено.

Если cs Qt :: CaseSensitive (по умолчанию), поиск чувствителен к регистру; в противном случае поиск не зависит от регистра.

Таким образом, поиск начинается с позиции 7 и ищет ОБРАТНОЙ для последнего совпадения «)», который в тот момент не являются ни между позициями 0-7 на QString

+0

Спасибо, имеет смысл. – SPlatten

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