0

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

}

}
4

2 回答 2

0

大家都没事!

JOSHUA PARIS BATTY << 找到了解决方案。我不小心对每个文件进行了两次迭代。我最初使用 while 循环并在其末尾迭代 i 以在文件中移动。但是,一旦我将其更改为 for 循环,我应该取出最后的“i++”。哎呀!

于 2013-06-28T08:51:13.133 回答
0

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));
}
}
}
于 2014-09-12T18:41:09.217 回答