9

Perl のイディオムの C++ 流は?

my @files = glob("file*.txt");
foreach my $file (@files) {

   # process $file
}
4

4 に答える 4

18

POSIX API は、このためにglob()およびglobfree()関数を指定します。マニュアルページを参照してください。wordexp()およびwordfree()も POSIX で指定されており、他の種類の拡張もサポートしています。

于 2010-05-07T01:44:13.673 に答える
7

ディレクトリの内容を読み取る標準の C++ 機能がないため、これをエミュレートする標準の C++ の方法はありません。あなたができることはBoost.Filesystemを使うことです:

#include <boost/filesystem.hpp> // plus iostream,algorithm,string,iterator
using namespace boost::filesystem; // and std

struct pathname_of {
    string operator()(const directory_entry& p) const {
        return p.path().filename(); // or your creativity here
    }
};

int main(int argc, char* argv[])
{
    transform(directory_iterator("."), directory_iterator(),
              ostream_iterator<string>(cout, "\n"),
              pathname_of());
    return 0;
}
于 2010-05-07T00:38:43.590 に答える
0

を使用して「グロブ」を模倣できますfnmatch。ただし、ディレクトリを開いて内容を読み取り、fnmatch.

標準のAFAIKである直接の同等物はありません。

于 2010-05-07T00:33:55.410 に答える
-2

オールドスクールと呼んでください。

f = popen("ls file*.txt", "r");
于 2010-05-07T01:43:33.960 に答える