2016-08-04 2 views
-2

Я использую эту инструкцию Regex для запуска. Но по какой-то причине он не печатает в терминале.Regex не может печатать

string s (filename); 
smatch m; 
regex e ("(\\.[^.]+)$"); 
regex_search (s,m,e); 

cout << m.suffix().str() <<endl; 

Что я сделал не так? Следуйте инструкциям, но по какой-то причине он не печатает.

+0

Что 'filename' установлен? Пожалуйста, включите [mcve]. –

+0

Используйте 'cout << m.str (1) << endl;' - https://ideone.com/pFajqP. 'suffix' здесь пуст, так как вы соответствовали концу строки. –

+0

@wiktorstribizew не думпиц. В настоящее время это не вложено внутри ... для цикла. Я следую этому примеру [http://en.cppreference.com/w/cpp/regex/match_results/suffix] – HiWorld

ответ

0

Смотрите suffix reference:

Получает ссылку на объект, представляющий std::sub_match целевую последовательность между концом всего матча регулярного выражения и в конце последовательности-мишени.

В вашем случае он пуст, так как вы соответствовали концу строки. Если вам нужно напечатать значение соответствия, используйте m.str() или - поскольку вы поместили шаблон в группу захвата - m.str(1).

См IDEONE C++ demo

Смежные вопросы