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

时间:2013-06-28 05:02:41

标签: c++ file recursion directory openframeworks

我正在开发一个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++;

}

}

2 个答案:

答案 0 :(得分:0)

每个人都没问题!

JOSHUA PARIS BATTY&lt;&lt;找到了解决方案。我不小心迭代每个文件两次。我最初使用while循环并在其末尾迭代i来遍历文件。但是,一旦我将其更改为for循环,我应该取出最终的“i ++”。 Woops!

答案 1 :(得分:0)

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

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));
}
}
}