Я попытался разделить 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"
Что не так?
вы также можете использовать section
QDebug() << filename.section("_",1,1); // will print "1384864213"
Только для решения оригинального mehtod:
Если кто-то хочет пойти с QString.split в этом случае:
добавление
qDirPictures.setFilter(QDir::Files);
перед циклом while он хорошо работает с QString.split с исходным кодом. Оказывается, что без каких-либо фильтров первые две строки вывода или элементы списка каталогов:
"."
а также
".."
что приводит к ошибке за пределами границ.