是否有findfirst()
和findnext()
的替代品。
我使用microsoft visual c++ 2010 express
并且它不支持这些函数头文件<dir.h>
?
我当前想要使用这些函数计算目录中的文件数,但是我遇到了没有这些功能的问题。
如果没有替换上述功能,还有其他方法吗? ?其他一些功能?
答案 0 :(得分:3)
正如'iammilind'在评论中所说(可能值得回答) - 你可以使用windows api的 FindFirstFile 和 FindNextFile 功能,你只需要填写一个结构并迭代后者直到你到达一个无效的句柄。这些函数执行在控制台上工作,但您必须包含“Windows.h”标题。
然而,这些函数确实带来了一些陷阱,如果你想让你的代码在除了windows之外的任何东西上运行,你可能最好使用另一个头文件/库(比如vBx提到的Boost :: Filesystem)
此外,这可能有所帮助: C++ - Load all filename + count the number of files in a current directory + filter file extension
答案 1 :(得分:1)
您可以{/ 3}}使用
答案 2 :(得分:1)
在Windows中,您可以使用:_findnext,_findnext64,_findnexti64,_wfindnext,_wfindnext64,_wfindnexti64
答案 3 :(得分:1)
如果您使用MinGW Developer Studio,这可能有所帮助:
假设您想要查看的目录中的文件将是:
sample1.txt
sample2.txt
sample3.txt
与模式“s *”匹配的两个文件的代码为:
#include<stdio.h>
#include<io.h>
int main()
{
// the input pattern and output struct
char *pattern = "s*";
struct _finddata_t fileinfo;
// first file (sample1.txt)
int x = _findfirst(pattern, &fileinfo);
printf("%s" ,fileinfo.name);
// next file (sample2.txt)
_findnext(x, &fileinfo);
printf("%s" ,fileinfo.name);
}