C++ 如何从FindFirstFile()获取多个文件类型可能吗?

C++ 如何从FindFirstFile()获取多个文件类型可能吗?,c++,C++,如果我想获得JPEG文件列表,我将把*.jpg传递给函数(在参数的末尾),FindFileNext()将逐个返回.jpg文件。如果我想让函数返回jpg和mp3文件怎么办?一个函数调用而不需要两个字符串传递给函数,可以这样做吗?您可以将*.掩码传递给函数,并在收到下一个文件后进行额外检查。您可以将*.掩码传递给函数,并在收到下一个文件后进行额外检查。在MSDN中文档: 你可以阅读: lpFileName[in] 目录或路径以及文件名,其中可以包括通配符,例如星号(*)或问号(?)。 因此,您最

如果我想获得JPEG文件列表,我将把*.jpg传递给函数(在参数的末尾),FindFileNext()将逐个返回.jpg文件。如果我想让函数返回jpg和mp3文件怎么办?一个函数调用而不需要两个字符串传递给函数,可以这样做吗?

您可以将
*.
掩码传递给函数,并在收到下一个文件后进行额外检查。

您可以将
*.
掩码传递给函数,并在收到下一个文件后进行额外检查。

在MSDN中文档:

你可以阅读:


lpFileName[in]
目录或路径以及文件名,其中可以包括通配符,例如星号(*)或问号(?)。

因此,您最多可以使用通配符,这不足以匹配两个不同的扩展名

您可能需要执行两个搜索,第一个使用jpg,第二个使用mp3。如果您关心效率,最好分析每种方法。

在MSDN文档中:

你可以阅读:


lpFileName[in]
目录或路径以及文件名,其中可以包括通配符,例如星号(*)或问号(?)。

因此,您最多可以使用通配符,这不足以匹配两个不同的扩展名


您可能需要执行两个搜索,第一个使用jpg,第二个使用mp3。如果你关心效率,最好描述每种方法。

你收到的答案只暗示了两种可能性:要么搜索两次完全不同的时间,一次搜索
*.jpg
,一次搜索
*.mp3
,要么搜索一次
*.
(并自行确定一个文件是否符合您所关心的内容)

至少在这种情况下,有一点中间立场。您可以搜索
*。?p?
,因为您关心的两个扩展名的第二个字母都是
p
。对于这一点,您仍然需要自己进行某种比较,以确定给定的文件是否真的有您关心的两个扩展名中的一个啊,它不会大大简化你的代码

同时,它可以大大加快搜索速度。调用
FindNextFile
会有相当大的开销,因此,如果您正在查看的目录中有许多文件与
?p?
扩展名不匹配,避免仅忽略它们就检索它们,可以节省相当多的时间


当然,这是特定于您至少有一个匹配字母的情况,因此这并不是一个完全通用的技巧。

您收到的答案只意味着两种可能性:要么搜索两个完全不同的时间,一次搜索
*.jpg
,一次搜索
*.mp3
,要么搜索一次
*
(并自行确定一个文件是否符合您所关心的内容)

至少在这种情况下,有一点中间立场。您可以搜索
*。?p?
,因为您关心的两个扩展名的第二个字母都是
p
。对于这一点,您仍然需要自己进行某种比较,以确定给定的文件是否真的有您关心的两个扩展名中的一个啊,它不会大大简化你的代码

同时,它可以大大加快搜索速度。调用
FindNextFile
会有相当大的开销,因此,如果您正在查看的目录中有许多文件与
?p?
扩展名不匹配,避免仅忽略它们就检索它们,可以节省相当多的时间


当然,这是特定于至少有一个匹配字母的情况,因此这不是一种完全通用的技术。

不,我不想获取所有文件,然后检查它们。这是浪费时间,运行速度较慢。我不确定是否可以将多个文件掩码作为一个参数传递。从另一方面来说,我非常确定FindFirstFile()/FindNextFile()函数在内部执行类似的检查。因此运行速度实际上不会变慢。是的,我正在考虑。谢谢不,我不想获取所有文件,然后检查它们。这是浪费时间,运行速度也会变慢。我不确定是否可以将多个文件掩码作为一个参数传递。从另一方面来说,我非常确定FindFirstFile()/FindNextFile()函数在内部执行类似的检查。因此,运行速度实际上不会变慢。是的,我正在考虑。谢谢,正如我所预料的,显然这是不可能的。谢谢,正如我所预料的,显然这是不可能的。谢谢提示。非常感谢:)提示不错。非常感谢:)