使用C ++完成文件名

时间:2012-07-13 00:21:32

标签: c++ windows

在python中,如果要打开以“apl_”开头的所有文件,只需打开“apl *”即可。你如何在C ++中做类似的事情。

假设我有一个我知道的文件以“llll”开头,但后缀未知。我该如何打开它?

2 个答案:

答案 0 :(得分:2)

  1. 打开目录
  2. 逐步浏览目录
  3. 中的文件列表
  4. 打开名称与您的模式匹配的文件。
  5. C: How to obtain a list of files in Windows directory?

答案 1 :(得分:2)

你不能只是在Python中“简单地打开”apl *“'。如果你试试这个:

open("apl*")

你会得到一个IOError - 除非你碰巧有一个字面名为“apl *”的文件。

在Python中有两种基本方法可以将它们转换为C ++。

首先:

[open(f) for f in glob.glob("apl*")]

在大多数非Windows平台上,glob.glob会直接转换为POSIX函数glob。不幸的是,在Windows上,它被称为_glob,在所有版本的Windows上都不存在,并且有严重的限制。因此,您希望使用FindFirstFileFindNextFile。链接页面上给出的示例应该向您展示如何操作。

第二

[open(f) for f in os.listdir(".") if f.startswith("apl")]

你可以再次使用FindFirstFile / FindNextFile迭代整个目录,然后过滤data-> cFileName是否以“apl”开头,但你也可以使用更清洁(更便携)的提升::文件系统:: directory_iterator。