Шарик файла в C++

Что является C++ способ идиомы Perl:

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

   # process $file
}
9
задан SilentGhost 7 May 2010 в 10:48
поделиться

4 ответа

Там нет стандартного способа 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;
}
7
ответ дан 4 December 2019 в 09:12
поделиться

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

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

0
ответ дан 4 December 2019 в 09:12
поделиться

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

f = popen("ls file*.txt", "r");
-2
ответ дан 4 December 2019 в 09:12
поделиться

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

18
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: