C++フォルダの下にあるすべてのフォルダとファイルを遍歴する


質問:
フォルダを指定し、フォルダの下にあるすべてのファイルを取得し、ファイルのパスを保存します.
解決方法:
再帰の思想を採用し、再帰の過程で各層を遍歴する.フォルダの場合は、下に移動します.ファイルの場合は、パスを保存します.
実装コード:
#include 
#include 
#include 
#include 
#include 

using namespace std;


void getAllFiles( string path, vector<string>& files)  
{
    long hFile = 0;               //    
    struct _finddata_t fileinfo;  //        
    string p;

    if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) !=  -1)  
    {  
        do  
        {   
            if((fileinfo.attrib & _A_SUBDIR))    //            
            {  
                if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)  
                {
                    getAllFiles( p.assign(path).append("\\").append(fileinfo.name), files );     //      ,      
                }
            }  
            else    //   
            {               files.push_back(p.assign(path).append("\\").append(fileinfo.name) );  //   ,       files   
            }  
        }while(_findnext(hFile, &fileinfo) == 0);  //     ,    0,  -1
        _findclose(hFile); 
    } 
}

int main()
{
    char * filePath = "file";       //        
    char * distAll = "path.txt";    //    
    vector<string> files;           //        
    ofstream ofn(distAll);          //    
    int size = 0;                   //      

    while(!files.empty())           //  vector
    {
        files.pop_back();
    }

    getAllFiles(filePath, files);   //           。      filePath
    size = files.size();            //      
    cout << size << endl;
    for (int i = 0; i < size; i++)  
    {
        ofn << files[i] << endl;    //       
    }
    ofn.close();                    //    
    return 0;
}