регулярные выражения C ++ TR1 недоступны

Я пытаюсь использовать расширения регулярного выражения ‘TR1’ для некоторого разбора строки C ++.
Я читал, что <regex> для этого требуются заголовок и пространство имен std :: tr1

Я могу скомпилировать с <regex> заголовок присутствует (хотя это заставляет меня использовать либо флаг, -std=c++0x или же -std=gnu++0x)

Тем не менее, когда я пытаюсь использовать std::tr1 namespace в моей программе, компиляция завершается неудачно с сообщением, что tr1 «не является именем пространства имен». Я не могу делать такие вещи, как,

std::tr1::regex rx("mypattern");

Я читал, что регулярные выражения TR1 поддерживаются начиная с gcc 4.3.0. Я использую g ++ через gcc 4.4.5.

Я что-то пропустил?

3

Решение

g ++ 4.7 пока не реализует регулярные выражения.

Но, несмотря на это, в C ++ 11 regex был перемещен из пространства имен std::tr1 в std, Итак, вместо std::tr1::regex, ты должен написать std::regex:

std::regex rx("mypattern");

Я не знаю, для каких версий g ++ до 4.7 это тоже относится. Но этот пример идеона прекрасно компилируется с g ++ 4.7. Однако помните, что реализация regex не реализована в этой версии компилятора.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]