Разделить QString на - (тире) символ, доступ к элементу списка

0

Я попытался разделить QString (имя файла), и я хочу получить части между двумя метками в filname.

Filname - это, например, "0000000398_05WA-1384864213-218.bmp".

Однако,

QStringList query;
QString filename;
QDirIterator it(qDirPictures, QDirIterator::NoIteratorFlags);

while (it.hasNext()) {

    it.next();
    filename = it.fileName();

    query = filename.split("-");

    qDebug()<<query;
}

дает мне правильный результат:

("0000000398_05WA", "1384864213", "218.bmp")

Но если я хочу получить доступ ко второму элементу списка в той же итерации с помощью:

qDebug()<<query.at(1);

Я получаю

"Ошибка ASSERT в QList :: at:" индекс за пределами диапазона "...

Однако, если я попытаюсь:

qDebug()<<query.at(0);

Я получаю правильный вывод:

"0000000398_05WA"

Что не так?

  • 3
    Утверждается ли утверждение в той же итерации, что и с правильным выводом?
  • 0
    Да. Если я получаю доступ к позиции 0, он работает нормально.
Теги:
qt
qstring

2 ответа

2
Лучший ответ

вы также можете использовать section

QDebug() << filename.section("_",1,1); // will print "1384864213"
  • 0
    Поскольку мне нужны оба числа, я решил использовать: `part = filename.section (" - ", 1,1); filename = filename.section ("-", 2,2); parttwo = filename.section (".", 0,0); `- спасибо!
0

Только для решения оригинального mehtod:

Если кто-то хочет пойти с QString.split в этом случае:

добавление

qDirPictures.setFilter(QDir::Files);

перед циклом while он хорошо работает с QString.split с исходным кодом. Оказывается, что без каких-либо фильтров первые две строки вывода или элементы списка каталогов:

"." 

а также

".." 

что приводит к ошибке за пределами границ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню