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 回答