在c ++中是否可以计算目录中具有给定扩展名的文件数?
我正在编写一个程序,可以做这样的事情(伪代码):
if (file_extension == ".foo")
num_files++;
for (int i = 0; i < num_files; i++)
// do something
显然,这个程序要复杂得多,但这应该可以让你对我正在尝试做的事情有所了解。
如果无法做到这一点,请告诉我。
谢谢!
答案 0 :(得分:6)
这种功能是特定于操作系统的,因此没有标准的,可移植的方法。
但是,使用Boost's Filesystem library,您可以以便携方式执行此操作,以及更多与文件系统相关的操作。
答案 1 :(得分:5)
C或C ++ 标准本身没有任何关于目录处理的内容,但是任何有价值的操作系统都会有这样的野兽,例如findfirst/findnext
函数或{{ 1}}。
你要做的就是对这些函数进行简单的循环,检查为你想要的扩展返回的字符串的结尾。
类似的东西:
readdir
如上所述,您将用于遍历目录的实际功能是特定于操作系统的。
对于UNIX,几乎可以肯定是使用opendir,readdir和closedir。这段代码是一个很好的起点:
char *fspec = findfirst("/tmp");
while (fspec != NULL) {
int len = strlen (fspec);
if (len >= 4) {
if (strcmp (".foo", fspec + len - 4) == 0) {
printf ("%s\n", fspec);
}
}
fspec = findnext();
}
答案 2 :(得分:1)
首先,你在为什么操作系统写作?
FindFirstFile
和FindNextFile
。man
和opendir
或readdir
的{{1}}。