0

从递归搜索目录返回正确值时出现问题。代码如下

#include <QCoreApplication>
#include <QDir>
#include <QString>

#include <QDebug>

static QString findDirectoryPathFromId(const QString &startPath, const QString &id)
{
    QDir dir(startPath);

    QFileInfoList list = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);

    QString path;

    foreach(QFileInfo dinfo, list)
    {
        if (dinfo.fileName() == id)
        {
            qDebug() << "****************Found****************" << dinfo.filePath();
            return dinfo.filePath();

        }

        else
        {
            findDirectoryPathFromId(dinfo.absoluteFilePath(), id);
       }

    }

return QString();

}


int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QStringList args = app.arguments();

    QString path = findDirectoryPathFromId("/home/project/dirtest", args.at(1));

    qDebug() << "Return path" << path;

    return 0;
}

该函数在打印“Found”调试语句时查找目录,但返回值为空字符串。

有人可以解释我在这里做错了什么。

谢谢

4

1 回答 1

0

我想我已经修好了。

我需要检查递归调用是否找到了目录并将其返回。

 path = findDirectoryPathFromId(dinfo.absoluteFilePath(), id);

        if (!path.isNull())
            return path;

这个对吗。

于 2012-11-08T09:31:02.100 回答