如何使用C或C++获取目录中的文件列表?

如何判断我的C或C++代码中目录中的文件列表?

我不允许执行ls命令并从程序中解析结果

2017年更新

在C++17中,现在有一种列出文件系统文件的正式方式:std::filesystem。下面的源代码(此代码可能会抛出)提供了一个来自Shreevardhan的极好答案:

#包括<字符串>
#包括<iostream>
#包括<文件系统>
名称空间fs=std::filesystem;
int main()
{
std::string path="/path/to/directory";
for(const auto&entry:fs::directory\u迭代器(path))
std::cout<<entry.path()<<std::endl;
}

旧答案:

在小而简单的任务中,我不使用boost,而是使用dirent.h。它在UNIX中作为标准头提供,也可通过Toni Ronkko创建的兼容层用于Windows

DIR*DIR;
结构导向;
if((dir=opendir("c:\\src\\")!=NULL){
/*打印目录中的所有文件和目录*/
while((ent=readdir(dir))!=NULL){
printf("%s\n",ent->d_name);
}
closedir(dir);
}否则{
/*无法打开目录*/
佩罗尔;
返回退出失败;
}

它只是一个小的头文件,可以完成大部分需要的简单工作,而无需使用基于大模板的方法,如boost(无意冒犯,我喜欢boost!)

发表评论