2

和 有什么替代品findfirst()findnext()?我正在使用microsoft visual c++ 2010 express它不支持这些功能,也不支持头文件<dir.h>

我正在寻找使用这些函数来计算目录中文件的数量,但是没有这些函数我遇到了问题。

如果没有替代上述功能,是否还有其他出路。? 其他一些功能?

4

4 回答 4

3

正如'iammilind'在评论中所说(可能值得回答) - 您可以使用windows api的FindFirstFileFindNextFile函数,您只需要填写一个结构并遍历后者,直到您到达一个无效的句柄。这些函数可以在控制台上运行,但您必须包含“Windows.h”标头。

然而,这些函数确实存在一些缺陷,如果您希望代码在 Windows 以外的任何东西上运行,您最好使用另一个头文件/库(例如 vBx 提到的 Boost::Filesystem)。

此外,这可能会有所帮助: C++ - 加载所有文件名 + 计算当前目录中的文件数 + 过滤文件扩展名

于 2011-07-04T09:26:55.473 回答
1

您可以为此使用Boost.Filesystem

于 2011-07-04T06:06:02.883 回答
1

在 Windows 中,您可以使用:_findnext、_findnext64、_findnexti64、_wfindnext、_wfindnext64、_wfindnext64

于 2012-09-21T17:28:05.923 回答
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);

}
于 2015-03-09T07:27:44.997 回答