Python では、「apl_」で始まるすべてのファイルを開きたい場合は、単に「apl*」を開くことができます。C++ で同様のことを行う方法を教えてください。
「llll」で始まることがわかっているが、サフィックスが不明なファイルがあるとします。どうすれば開くことができますか?
Python では、「単に "apl*" を開く」ことはできません。これを試してみると:
open("apl*")
文字通り「apl*」という名前のファイルがない限り、IOError が返されます。
Python でこれを行うには 2 つの基本的な方法があり、どちらも C++ に変換できます。
初め:
[open(f) for f in glob.glob("apl*")]
Windows 以外のほとんどのプラットフォームでglob.glob
は、POSIX 関数に直接変換されますglob
。残念ながら、Windows では と呼ばれ_glob
、すべてのバージョンの Windows に存在するわけではなく、厳しい制限があります。そのため、代わりにFindFirstFileとFindNextFileを使用します。リンクされたページに示されている例は、その方法を示しているはずです。
2番:
[open(f) for f in os.listdir(".") if f.startswith("apl")]
FindFirstFile/FindNextFile を使用してディレクトリ全体を反復処理し、data->cFileName が "apl" で始まるかどうかでフィルタリングするだけでこれを行うことができますが、よりクリーンな (そしてより移植性の高い) boost::filesystem: を使用することもできます。 :directory_iterator.