Глобус файла в C ++ - PullRequest
       10

Глобус файла в C ++

9 голосов
/ 07 мая 2010

Что такое C ++ для языка Perl:

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

   # process $file
}

Ответы [ 4 ]

18 голосов
/ 07 мая 2010

POSIX API определяет функции glob() и globfree() для этого. См. справочную страницу . wordexp() и wordfree(), также указанные в POSIX, поддерживают другие виды расширений .

7 голосов
/ 07 мая 2010

Нет стандартного 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;
}
0 голосов
/ 07 мая 2010

Зовите меня старой школой.

f = popen("ls file*.txt", "r");
0 голосов
/ 07 мая 2010

Вы можете имитировать «шар», используя fnmatch. Но вам нужно открыть каталог, прочитать содержимое и сопоставить каждую запись, используя fnmatch.

Нет прямого эквивалента, это стандарт AFAIK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...