在python中,如果要打开所有以“apl_”开头的文件,只需打开“apl*”即可。你如何在 C++ 中做类似的事情。
假设我有一个文件,我知道它以“llll”开头,但有未知的后缀。我该如何打开它?
您不能只在 Python 中“简单地打开“apl*””。如果你试试这个:
open("apl*")
你会得到一个 IOError——除非你碰巧有一个文件名是“apl*”。
在 Python 中有两种基本方法可以做到这一点,这两种方法都可以翻译成 C++。
第一的:
[open(f) for f in glob.glob("apl*")]
在大多数非 Windows 平台上,glob.glob
直接转换为 POSIX 函数glob
。不幸的是,在 Windows 上,它被称为_glob
,并不存在于所有版本的 Windows 中,并且有严重的限制。因此,您想使用FindFirstFile和FindNextFile。链接页面上给出的示例应该向您展示如何做到这一点。
第二:
[open(f) for f in os.listdir(".") if f.startswith("apl")]
您可以再次使用 FindFirstFile/FindNextFile 来迭代整个目录,然后过滤 data->cFileName 是否以“apl”开头,但您也可以使用更简洁(更便携)的 boost::filesystem: :directory_iterator。