2016-04-15 4 views
1

Я работаю над проектом для школы, он включает в себя путь к указанному пути к файлу и подсчету файлов. Однако по какой-то причине мой не считает их. Как я вижу это, регулярное выражение, которое я использую для расширения моего файла, недопустимо, или итератор каталогов был выполнен неправильно. Тем не менее, я играл с ним в течение нескольких часов, и я не получаю это регулярное выражение: regex extensions("\.(java|class)");Программа не подсчитывает расширения файлов

каталог итератора:

void nrScan(regex extensions, path const& f, map<string, int> &numExtensions) 
{ 
    for (directory_iterator d(f), e; d != e; d++) 
    { 
     string extension = d->path().extension().string(); 
     int count = 0; 
     if (regex_search(extension, extensions)) 
     { 
      numExtensions[extension]++; 
      count++; 
     } 
     cout << count << endl; 
    } 
} 

ответ

0

Ваше регулярное выражение выглядит как расширенное регулярное выражение. Вы должны убедиться, что regex_search использует расширенный RE, а не базовый RE, чтобы выполнить поиск.

+0

Я никогда не слышал или не использовал обычные или расширенные регулярные выражения. – billyjim1

+0

http://www.cplusplus.com/reference/regex/regex_search/ В нем говорится: Объект basic_regex (шаблон) для соответствия. Поэтому вы должны изменить re на «\. \ (Java \ | class \\)». –

+0

Я сделал это, однако он все еще не работает – billyjim1