2

ルートフォルダが含まれています

+ Test1(folder) > Test2(folder)>Test3(folder)>file1,file2....(file) 
+ Test5(folder) > Test6(folder)>file1,file2....(file)

入力付きのリストファイルを取得する方法は、C++のルートフォルダです。リストファイル(file1、file2 ....)が子ルートフォルダー(ルートフォルダー> file1、file2 ...)の場合、リストファイルを正常に取得しました。しかし、私の場合、リストファイルを取得するには、多くの親フォルダーをスキャンする必要があります。私の場合、リストファイルを取得するにはどうすればよいですか?これは、親フォルダーがない場合にリストファイルを取得するための私のコードです

    DIR *dirStr = NULL; 
    dirStr = opendir(rootpath)
    dirent *nextFile = NULL;
    while ((nextFile = readdir(dirStr))!=NULL)
    {
        // Avoid hidden files
        //Scan all file an dictionary
        if (nextFile->d_name[0] != '.')
        {
                    cout<<nextFile->d_name<<endl;
        }
    }
4

1 に答える 1

3

再帰を使用します。

再帰関数は、自分自身を呼び出す関数です。別の関数を呼び出す相互再帰関数もあり、その関数は呼び出し元の関数を再度呼び出します。

再帰の洗練された例は、次の素朴な階乗関数です。

int factorial(int x) {
    if (x == 1) return 1; // assume 1
    else if (x > 1) return x*factorial(x-1);
    else throw std::logic_error("factorial called with argument<1");
}
于 2013-02-25T16:18:38.270 に答える