我尝试拆分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;
怎么了?
答案 0 :(得分:2)
你也可以使用section
QDebug() << filename.section("_",1,1); // will print "1384864213"
答案 1 :(得分:0)
只是为了解决原来的问题:
如果有人想在这种情况下使用QString.split:
添加
qDirPictures.setFilter(QDir::Files);
在while循环之前使其与QString.split一起使用原始代码。事实证明,没有任何过滤器,前两个输出行或目录列表项是:
"."
和
".."
导致越界错误。