我有一个QVector,它应该存储文件路径,比如
"./zThumbnail/1004.jpeg"
"./zThumbnail/1005.jpeg"
"./zThumbnail/1006.jpeg"
"./zThumbnail/1007.jpeg"
"./zThumbnail/1008.jpeg"
"./zThumbnail/1009.jpeg"
"./zThumbnail/101.jpeg"
"./zThumbnail/1010.jpeg"
"./zThumbnail/1011.jpeg"
"./zThumbnail/1012.jpeg"
"./zThumbnail/1013.jpeg"
QFileInfoList filelistinfo = dir.entryInfoList();
foreach (const QFileInfo &fileinfo, filelistinfo) {
imagePath.push_back(fileinfo.absoluteFilePath());
qDebug() << fileinfo.absoluteFilePath();
}
./abc/1.jpg
./abc/2.jpg
./abc/3.jpg
.
.
.
./abc/1209.jpg
但不是按照上面的顺序存储,而是像
一样存储./abc/1.jpg
./abc/10.jpg
./abc/100.jpg
./abc/1000.jpg
./abc/1001.jpg
.
.
如何以数字顺序存储图像文件路径?
答案 0 :(得分:5)
您可以使用std::sort
进行排序,因为我假设文件的基本名称是整数。
QFileInfoList filelistinfo = dir.entryInfoList();
for(const QFileInfo &fileinfo: filelistinfo)
imagePath.push_back(fileinfo.absoluteFilePath());
std::sort(imagePath.begin(), imagePath.end(),
[](const QString & a, const QString & b) -> bool
{
return QFileInfo(a).baseName().toInt() < QFileInfo(b).baseName().toInt();
});
qDebug()<<imagePath;
注意:
目前不推荐使用qSort
,因为它通常比std::sort
慢,有关详细信息,请参阅:Performance of qsort vs std::sort?