Qt中读取一个文件夹里边所有特定后缀的文件名(如.gif),然后在这些文件名里边得到某个部分(如screen)均相同的文件名有多少个。

    在一个文件夹里边,可以寻找具有相同部分的文件名有多少个。


#include <QDir>
#include <QDebug>
#include <string>
#include <QByteArray>

int main()
{
    QString str;
    QDir fileDir("/data/screen");
    QFileInfoList list = fileDir.entryInfoList(QStringList() << "*.gif");
    for (int i = 0; i < list.length(); i++)
    {
        qDebug() << list.at(i).baseName();
        str.append(list.at(i).baseName() + " ");
    }	
    qDebug() << str << "size:" << str.size();
    int num = 0;
    QByteArray tmp = str.toLatin1();
    char *str1 = tmp.data();
    while ((str1 = strstr(str1, "screen")))
    {
	num++;
	str1 += 6;
    }
    qDebug() << "number:" << num;

    return 0;
}

    在代码中,会通过.gif的文件后缀名来获取文件夹里边的所有gif文件名。这些文件名都会存到QString声明的str里边,然后通过QByteArray tmp = str.toLatin1()和char *str1 = tmp.data(),将QString型字符串转换为char*型字符串。再使用库函数strstr()来寻找screen,每找到一个screen就在while里边的num累加一次,并将这个screen去除,然后去寻找下一个screen,直至结束。

    下面是程序的输出结果:

    

猜你喜欢

转载自blog.csdn.net/quan005/article/details/88087139