3

python glob 関数と同等の ac/cpp のみのパッケージを知っている人はいますか?

基本的に、私はこのようなものを探しています:

string startDirectory = "c:\foo\bar\*.txt"
vector<string> filename_list = getFilenameList(startDirectory)

注: Python には、これを行うための非常に便利な方法があります。

glob(startDirectory)

注: Windows と Linuxで動作し、ブーストがない実装を探しています- 標準の c++,c だけです。

4

1 に答える 1

6

これは、矛盾する要件を持つ質問の 1 つです。

  • ライブラリがありません

  • ポータブル

Boost などのライブラリの主な機能の 1 つは、移植可能なコードを記述できるようにすることです。あなたの他のオプションは、次のようなコードの束を書くことです:

#if defined _WIN32
#include <Windows.h>
std::vector<std::string> glob(const std::string &pattern)
{

}
#else
#include <glob.h>
std::vector<std::string> glob(const std::string &pattern)
{

}
#endif

移植可能なコードが実際にどれほど苦痛であるかを理解していないかもしれません。たとえば、std::ifstreamWindows では、ユーザーがファイル名に Unicode 文字を入れると基本的に壊れます。これが、私たちが図書館を愛する理由です。

ノート

C または C++ 標準ライブラリには、ディレクトリの内容を一覧表示できる機能はありません。グロビングを行いたい場合は、プラットフォーム固有のコードを使用する必要があります。この問題における唯一の選択肢は、バグだらけのコードを独自に作成するか、他の人と同じように十分にテストされたライブラリを使用するかです。

于 2013-05-17T01:31:25.137 に答える