将QString拆分为 - (破折号)字符,列出项目访问权限

时间:2013-11-25 14:55:46

标签: c++ qt qstring

我尝试拆分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;
}

给了我正确的输出:

(&#34; 0000000398_05WA&#34;,&#34; 1384864213&#34;,&#34; 218.bmp&#34;)

但是如果我想在同一次迭代中访问第二个列表项:

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

我得到了

  

&#34;在QList :: at中ASSERT失败:&#34;索引超出范围&#34; ...

但是,如果我尝试:

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

我得到了正确的输出:

  

&#34; 0000000398_05WA&#34;

怎么了?

2 个答案:

答案 0 :(得分:2)

你也可以使用section

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

答案 1 :(得分:0)

只是为了解决原来的问题:

如果有人想在这种情况下使用QString.split:

添加

qDirPictures.setFilter(QDir::Files);

在while循环之前使其与QString.split一起使用原始代码。事实证明,没有任何过滤器,前两个输出行或目录列表项是:

"." 

".." 

导致越界错误。