Есть ли способ проверить, существует ли файл с именем файла, содержащим регулярное выражение

Учитывая путь, по которому вы ищете, и имя файла содержит регулярное выражение, есть ли способ проверить, существует ли какой-либо файл, удовлетворяющий шаблону имени файла, существующему по этому пути? В С++?? например: под путем

/path

Я хочу найти файл "foo.*"

foo.* 

результатом может быть foo.1 или foo.2 или что-то еще. Я хотел бы получить результат (я имею в виду, что я хочу знать, существует ли файл и точное имя файла), спасибо


person user1853170    schedule 28.09.2013    source источник
comment
Вы ищете поисковый запрос glob. В системах Linux-y см. glob. В Windows FindFirstFile и др.   -  person Igor Tandetnik    schedule 29.09.2013
comment
Вы имеете в виду foo, за которым следует что-либо (регулярное выражение) или foo, за которым следует точка, за которой следует что-либо (шарик)?   -  person Walter Tross    schedule 29.09.2013
comment
Имейте в виду, что ответ на любой такой вопрос устаревает, как только вы его получаете — что, если будет создан новый файл?   -  person Alan Stokes    schedule 29.09.2013
comment
@IgorTandetnik спасибо, глоб кажется тем, что я ищу   -  person user1853170    schedule 29.09.2013


Ответы (1)


Загляните в boost::filesystem, иначе вы нужно будет посмотреть API для вашей ОС.

Вот пример (непроверенный):

boost::filesystem::path dir("/path");
boost::filesystem::directory_iterator it(dir), end;
BOOST_FOREACH(const boost::filesystem::path& p, std::make_pair(it, end))
{
    if(boost::filesystem::is_regular_file(p))
    {
        if(p.stem().string() == "foo")
        {
            std::cout << p.extension() << '\n';
        }
    }
}
person Jesse Good    schedule 28.09.2013