替换findfirst()和findnext()

时间:2011-07-04 05:45:27

标签: c++ visual-c++ visual-c++-2010-express

是否有findfirst()findnext()的替代品。 我使用microsoft visual c++ 2010 express并且它不支持这些函数头文件<dir.h>

我当前想要使用这些函数计算目录中的文件数,但是我遇到了没有这些功能的问题。

如果没有替换上述功能,还有其他方法吗? ?其他一些功能?

4 个答案:

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

}