Я использую Qt Creator для разработки приложения C++, я пытаюсь изучить функции QString, и у меня проблема с функцией indexOf(). Я пытаюсь найти строку "str" в другой строке, но эта функция всегда возвращает первый индекс
#include <QString>
#include <QDebug>
int main()
{
QString str = "Topic of today is QString String";
QString y = "Str";
int index;
index = str.indexOf(y, 1);
qDebug() << "index: " << index;
}
@drescherjm я знаю, что это указывает на первую «Str», но я много раз менял число, но оно все еще показывает первый индекс. Также спасибо за ответ
indexOf возвращает первый индекс, соответствующий заданному вами смещению startfrom (1).
Если вы хотите получить все индексы, вам нужно вызвать indexOf с набором startfrom для последнего найденного индекса + 1 несколько раз, пока вы не найдете больше вхождений.
Спасибо, понял, попробую.
Он всегда возвращает первый индекс, потому что вы используете 1 в качестве второго параметра indexOf(). Если вам нужно второе совпадение, вам нужно использовать предыдущий индекс в качестве второго параметра.
Следующий код показывает, как найти и отобразить первые 2 совпадения.
#include <QString>
#include <QDebug>
int main()
{
QString str = "Topic of today is QString String";
QString y = "Str";
int index = 0;
index = str.indexOf(y, index);
qDebug() << "First index: " << index;
if (index > 0) {
index = str.indexOf(y, index+1);
if (index > 0) qDebug() << "Second index: " << index;
}
}
Спасибо за ответ, но когда я выполняю этот код, он возвращает ту же проблему, что и у меня. Первый индекс: 19, второй индекс: 19.
индекс = str.indexOf (у, индекс + 1); Плюс один, имеет значение :)
@p-a-o-l-o это должно было быть моей первой мыслью, но я хотел проверить.
Он всегда возвращает первый индекс, потому что вы используете 1 в качестве второго параметра indexOf(). Если вам нужно второе совпадение, вам нужно использовать предыдущий индекс в качестве второго параметра.