gpt4 book ai didi

c++ - readdir 排除目录中的某些文件

转载 作者:行者123 更新时间:2023-11-28 05:28:33 28 4
gpt4 key购买 nike

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

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

最佳答案

您在每次迭代中执行 readdir 2 次。因此,您将跳过一半的文件。

修复很简单,只需调用一次:

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

vector<string> fileNames;

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

关于c++ - readdir 排除目录中的某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40022359/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com