Распечатать .pdf имена файлов из каталога с Boost.regex - PullRequest
4 голосов
/ 29 апреля 2011

Это мой код:

path Path = "e:\\Documents\\";
boost::regex reg("(*.pdf)");
for(recursive_directory_iterator it(Path); it != recursive_directory_iterator(); ++it)
{
    if(boost::regex_search(it->string(), reg))
    {
        cout << *it << endl;
    }
}

Но я всегда получаю ошибку Abort () в Visual Studio, после запуска программы проблема в этой строке:

boost::regex reg("(*.pdf)");

Разве я не объявляю объект регулярного выражения хорошим?

1 Ответ

4 голосов
/ 29 апреля 2011

*.pdf не регулярное выражение, это глобус (для сопоставления файлов).Вам необходимо

boost::regex reg("(.*\\.pdf)"); 
  • .: соответствует любому одному символу
  • *: 0 или более из предыдущего соответствия
  • \\: длясделать один \ для экранирования (игнорируйте регулярное выражение следующего символа)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...