LINUX.ORG.RU

[C++0x] regular expressions


0

3

Понадобилось мне немного поиграться с регулярными выражениями.
В процессе поиска какой-либо Си\Си++ либы обнаружил, что новый стандарт поддерживает регулярки «из коробки».
Однако ld сообщает мне, что :

undefined reference to `std::basic_regex<char, std::regex_traits<char> >::_M_compile()'
Насколько я, читая гугл, понял, реализация regexp в gcc ещё не допилена.

Или уже допилена в более свежем? У меня 4.4.5.

В общем у меня два вопроса:
1) В какой версии gcc будут работать регулярные выржения?
2) Какая сторонняя библиотека сейчас адекватна?

★★☆

pcrecpp - обертка pcre для плюсов вполне адекватна.

Olegymous ★★ ()

без кода что-то сложно сказать, но советую использовать Boost.Regex т.к. она должна была стать частью стандарта C++11 и по этому можно будет с минимальными изменениями заменить на стандартную

frozenix ★★★ ()

оффтопик. А как в плюсовом мире принято распространять программы для новых версий гцц? Прикладывать тулчейн вместе с программой, проверять, удовлетворяет ли системный гцц минимальным требованиям и если нет — собирать свой в ходе make?

stevejobs ★★★★☆ ()
Ответ на: комментарий от hippi90

to hippi90: В 4.6 ситуация ещё хуже — рантайм ошибки. Увы, но факт.

to frozenix: Гляну, но я слышал столько грязи по отношению к boost что... ну в общем не знаю...

to stevejobs: Не знаю как принято, но никто не запрещает статическую линковку.

Stahl ★★☆ ()
Ответ на: комментарий от Stahl

в чем проблема? я говору временно сделать using boost::basic_regex, а потом уже использовать using std::basic_regex, когда стандартный допилят

frozenix ★★★ ()

Однозначно boost, std'шные регулярки оттуда взяты.

DELIRIUM ☆☆☆☆☆ ()

Плюсую boost, ЕМНИП именно его и стандартизировали.

Pavval ★★★★★ ()
Ответ на: комментарий от stevejobs

> удовлетворяет ли системный гцц минимальным требованиям и если нет — собирать свой в ходе make?

поржал :)

Наверное, все-таки правильнее указать новую версию gcc в зависимостях пакета

Harald ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.