findfirst()和findnext()的替换

replacement for findfirst() and findnext()

本文关键字:替换 findfirst findnext      更新时间:2023-10-16

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

我想用这些函数来计算目录中的文件数量,但如果没有这些函数,我会遇到问题。

如果不能替换上述功能,还有其他办法吗?其他功能?

正如"iammilind"在评论中所说(可能值得回答(-你可以使用windows api的FindFirstFileFindNextFile控制台上运行,但必须包含"Windows.h"标头。

然而,这些函数确实有一些陷阱,如果你想让代码在windows之外的任何东西上运行,你最好使用另一个头/库(比如vBx提到的Boost::Filesystem(。

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

您可以使用Boost。的文件系统

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

如果您使用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);
}