我之前在我的Dev-cpp中使用过这种代码:
if((dh = opendir(folder)) !== false){
while((file = readdir(dh)) !== false){
// do my stuff
}
closedir(dh);
}
但是现在我正在使用MSVC ++并且我不知道如何在那里添加那些文件,我试图在那里复制dirent.h / dir.h / errno.h,但它给出了另一个与其中包含的文件有关的错误文件...,并通过查看文件,我看到mingw的东西,所以它的编译器相关? idk MSVC ++使用什么编译器,但是可以在MSVC ++中复制这些文件并使其正常工作吗?
我试图从MSDN查找一些代码,但它确实搞砸了,所以我希望我可以使用上面的这些函数...
答案 0 :(得分:14)
我建议使用FindFirstFile()和FindNextFile()。
以下是MSDN example,它完全符合您的要求。
答案 1 :(得分:7)
如果您需要快速更换,您也可以使用:
http://www.two-sdg.demon.co.uk/curbralan/code/dirent/dirent.html
我发现使用POSIX API for Win32的简单类
答案 2 :(得分:3)
太好了,毕竟不是那么难,我不得不使用do-while循环:
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
if((hFind = FindFirstFile("C:/some/folder/*.txt", &FindFileData)) != INVALID_HANDLE_VALUE){
do{
printf("%s\n", FindFileData.cFileName);
}while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
这真的更好,因为我可以使用“* .txt”等,使得更容易找到一些特定的文件类型,早些时候我必须为此编写自己的匹配函数:D
答案 3 :(得分:1)
这个问题的答案很大程度上取决于你正在编译的目标平台。
MSVC ++是一个编译器,所以我猜你试图在Windows平台上执行与opendir()和readdir()类似的操作。在这种情况下,请查看以下资源:
第二个链接是MSDN页面,其中列出了Windows平台API上与文件系统交互的所有可用功能。您会发现Windows中大多数文件操作都是以调用CreateFile函数开始的。
答案 4 :(得分:0)
另一个可能更好的直接替换:https://github.com/tronkko/dirent
答案 5 :(得分:-1)
使用boost::filesystem
,如果使用的是C ++ 17,则使用std::filesystem