Qt QString lastIndexOf не работает

Я использую Qt5.6, я пытаюсь использовать функцию 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, почему?

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

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


person SPlatten    schedule 02.08.2016    source источник


Ответы (1)


Из документации:

int QString::lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

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

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

Таким образом, поиск начинается с позиции 7 и ищет НАЗАД последнее вхождение ')', которых в этот момент нет между позициями 0-7 в QString.

person Dillydill123    schedule 02.08.2016