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" デバッグ ステートメントが出力されるときにディレクトリを見つけますが、戻り値は null 文字列です。

誰かが私がここで間違っていることを説明できますか?

ありがとう

4

1 に答える 1

0

私はそれを修正したと思います。

再帰呼び出しでディレクトリが見つかったかどうかを確認して返す必要があります。

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

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

これは正しいです。

于 2012-11-08T09:31:02.100 に答える