和 有什么替代品findfirst()
吗findnext()
?我正在使用microsoft visual c++ 2010 express
它不支持这些功能,也不支持头文件<dir.h>
?
我正在寻找使用这些函数来计算目录中文件的数量,但是没有这些函数我遇到了问题。
如果没有替代上述功能,是否还有其他出路。? 其他一些功能?
和 有什么替代品findfirst()
吗findnext()
?我正在使用microsoft visual c++ 2010 express
它不支持这些功能,也不支持头文件<dir.h>
?
我正在寻找使用这些函数来计算目录中文件的数量,但是没有这些函数我遇到了问题。
如果没有替代上述功能,是否还有其他出路。? 其他一些功能?
正如'iammilind'在评论中所说(可能值得回答) - 您可以使用windows api的FindFirstFile和FindNextFile函数,您只需要填写一个结构并遍历后者,直到您到达一个无效的句柄。这些函数可以在控制台上运行,但您必须包含“Windows.h”标头。
然而,这些函数确实存在一些缺陷,如果您希望代码在 Windows 以外的任何东西上运行,您最好使用另一个头文件/库(例如 vBx 提到的 Boost::Filesystem)。
此外,这可能会有所帮助: C++ - 加载所有文件名 + 计算当前目录中的文件数 + 过滤文件扩展名
您可以为此使用Boost.Filesystem
在 Windows 中,您可以使用:_findnext、_findnext64、_findnexti64、_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);
}