我有一段相当简单的代码来获取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);
答案 0 :(得分:1)
每次迭代都要执行 readdir 2次。所以,你正在跳过一半的文件。
修复很简单,只需拨打一次电话:
m1