Question: I tried to split a QString (a filename) and I want to get parts between two dash signs in the filname.

The Filname is for example "0000000398\_05WA-1384864213-218.bmp" .

However, 

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

while (it.hasNext()) {

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

    query = filename.split("-");

    qDebug()<<query;
}

```

gives me a correct output:

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

But if i want to access the second list item in the same iteration with:

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

```

I get an 

> 
> "ASSERT failure in QList::at: "index out of range"...
> 
> 
> 

However, if i try with:

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

```

I get the correct output:

> 
> "0000000398\_05WA" 
> 
> 
> 

Whats wrong ?

Answer: 
you could also use [`section`](http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#section)

```
QDebug() << filename.section("_",1,1); // will print "1384864213"

```
Just for solving the original mehtod:

If somebody wants to go with QString.split in this case: 

adding 

```
qDirPictures.setFilter(QDir::Files);

```

before the while loop makes it work well with QString.split with the original code. Turns out that without any filters the first two output lines or directory list items are:

```
"." 

```

and

```
".." 

```

which leads to the out of bounds error.