如何使用openFrameworks c++递归扫描目录中的头文件

How to recursively scan a directory for header files with openFrameworks c++

本文关键字:文件 扫描 何使用 openFrameworks c++ 递归      更新时间:2023-10-16

我正在开发一个openFrameworks应用程序,该应用程序允许我拖放一个目录来查找所有头文件。下面的函数获取删除的目录,并递归地扫描它(及其所有子目录)中的头文件,并将它们推回到headerFile向量中。

目前,它只会在原始目录中找到一小部分头,但在进行了一些cout检查后,我确信我可以看到它正在进入子目录。如果有人能告诉我出了什么问题,我将不胜感激!

这是我的密码!

void Directory::scanDirectory(ofDirectory dir)
{    
int i, size;
ofDirectory* newDir;
size = dir.size();
for (i = 0; i < size; i++){
    if (dir.getFile(i).isDirectory()==1){
        newDir = new ofDirectory(dir.getFile(i).getAbsolutePath());
        newDir->listDir();
        newDir->sort();
        scanDirectory(*newDir);
    }
    else if (dir.getFile(i).getExtension() == "h"){
        headerFiles.push_back(dir.getFile(i));
    }
    i++;
}
}

大家都好!

JOSHUA PARIS BATTY<lt;已发现解决方案。我不小心在每个文件上迭代了两次。我最初使用while循环,并在循环结束时迭代I来遍历文件。然而,一旦我把最后一个"I++"改成for循环,我就应该去掉它。哇!

1)size=dir.sizes()应替换为size=dir.listDir();因为需要填充目录。。

2) 你的for循环中有一个i++。。导致循环错误。。

3) 不需要为newdir使用指针。。

查看下面的示例。。。

void Directory::scanDirectory(ofDirectory dir){
int i,size;
size = dir.listDir();
dir.sort();
for (int i = 0; i < size; i++){
if (dir.getFile(i).isDirectory()==1){
ofDirectory newDir(dir.getFile(i).getAbsolutePath());
ofApp:: scanDirectory( newDir );
}else {
fileslist.push_back(dir.getPath(i));
}
}
}