在c++wxDir中以非递归方式迭代目录

Iterate directories non-recursively in c++ wxDir

本文关键字:方式 迭代 递归 c++wxDir      更新时间:2023-10-16

我正在尝试迭代一个目录并列出里面的所有文件夹。我查看了wx文档并使用了GetAllFiles

目前我使用的是:

wxArrayString files;
size_t n, i;
n = wxDir::GetAllFiles("c:/temp/", &files, wxEmptyString, wxDIR_DIRS);
for(i=0; i<n; i++) {
    myOwnPrint("folders: %s", files.Item(i));
}

它列出了所有目录和其中的子目录。。

我只想列出所有外部文件夹。。

我检查了wxDirFlags,但我认为没有只以非递归方式列出目录的标志。

有什么想法吗?

GetAllFiles()是一个辅助方法,可以避免在进行递归目录遍历时必须定义wxDirTraverser派生的类,因此不递归没有多大意义——这就是它的作用。

对于给定目录中的文件和/或目录的简单迭代,只需使用注释中已经提到的GetFirst()GetNext()

wxDir dir(path);
if ( !dir.IsOpened() ) {
   ... handle error ...
}
wxString subdir;
for ( bool cont = dir.GetFirst(&subdir, wxString(), wxDIR_DIRS);
      cont;
      cont = dir.GetNext(&subdir) ) {
   ... do whatever you need to do with subdir ...
}