readdir排除了目录中的一些文件

时间:2016-10-13 13:27:44

标签: c++ dirent.h

我有一段相当简单的代码来获取C ++目录中的文件列表。令人费解的是,目录中的135个文件中只有68个最终存储在矢量fileNames中。发生了什么事?

DIR* pDIR = opendir(directoryName.c_str());
  struct dirent* entry = nullptr;

  vector<string> fileNames;

  while(readdir(pDIR)) {
    entry = readdir(pDIR);
    if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
      fileNames.push_back(entry->d_name);
  }
  closedir(pDIR);

1 个答案:

答案 0 :(得分:1)

每次迭代都要执行 readdir 2次。所以,你正在跳过一半的文件。

修复很简单,只需拨打一次电话:

m1