Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何扫描目录树?_C++ - Fatal编程技术网

C++ 如何扫描目录树?

C++ 如何扫描目录树?,c++,C++,我需要做一种扫描,我已经做了第一部分,程序将扫描通知目录并将文件与其他目录分开,但我也需要扫描其他目录,请看我的代码: void CompleteScan(const char root[], WCHAR *Extension,std::vector<FileStruct> &Return_Files,std::vector<WIN32_FIND_DATA> &Return_Directorys){ std::vector<FileStruct>

我需要做一种扫描,我已经做了第一部分,程序将扫描通知目录并将文件与其他目录分开,但我也需要扫描其他目录,请看我的代码:

void CompleteScan(const char root[], WCHAR *Extension,std::vector<FileStruct> &Return_Files,std::vector<WIN32_FIND_DATA> &Return_Directorys){
std::vector<FileStruct> files;
std::vector<WIN32_FIND_DATA> dir;

Scan(root, Extension, files, dir);

if(dir.size() > 0){
    for(int i = 0; i < dir.size(); i++){
        /*          Here is directory by directory scan         */
    }
}
void CompleteScan(const char root[],WCHAR*扩展名,std::vector和Return_文件,std::vector和Return_目录){
std::矢量文件;
std::vector dir;
扫描(根目录、扩展名、文件、目录);
如果(dir.size()>0){
对于(int i=0;i
命令Scan返回一个FileStruct向量(Directory和WIN32_FIND_DATA)和一个Directorys向量,但我需要扫描所有Directorys,例如:

“C:\”程序扫描此目录并返回“C:\”上的所有目录,在我扫描此目录中的所有目录之前,但我不知道如何使其扫描“C:\”目录中的所有目录,请查看此列表,例如:

  • C:\{OK}
  • C:\Files{OK}
  • C:\Files\First File{cant}
  • C:\Files\First File\Second File{cant}

  • 对于找到的每个目录,您必须递归调用您的
    CompleteScan
    函数。

    递归!如果我删除了任何标点符号,请原谅;我没有要编译/测试的Windows框

    /**
     * @brief Accumulates the files and directories under the given root directory
     * into the output vectors allfiles and alldirs that you provide.
    **/
    void CompleteScan(const char root[],
                      WCHAR *Extension,
                      std::vector<FileStruct> &allfiles,
                      std::vector<WIN32_FIND_DATA> &alldirs)
    {
        std::vector<WIN32_FIND_DATA> subdirs;
    
        // Assuming your Scan function does what needs to be done with the allfiles
        // vector. If not, more code needed somewhere here to handle that.
        Scan(root, Extension, allfiles, subdirs);
    
        if(dir.size() > 0){
            for(int i = 0; i < dir.size(); i++){
                // Visit this directory
                alldirs.push_back(dir);
                // Visit all descendant directories
                CompleteScan(dir.cFileName, Extension, allfiles, alldirs);
            }
        }
    }
    
    /**
    *@brief累积给定根目录下的文件和目录
    *输入您提供的所有文件和所有目录的输出向量。
    **/
    void CompleteScan(常量字符根[],
    WCHAR*扩展,
    std::vector&所有文件,
    标准::向量和所有目录)
    {
    std::向量细分;
    //假设您的扫描函数完成了需要对所有文件执行的操作
    //如果不是,这里需要更多的代码来处理这个问题。
    扫描(根目录、扩展名、所有文件、子目录);
    如果(dir.size()>0){
    对于(int i=0;i