如何判断我的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!)