C ++ TR1正则表达式不可用

时间:2013-02-12 18:46:57

标签: c++ regex namespaces g++ tr1

我正在尝试将'TR1'正则表达式扩展用于某些C ++字符串解析。 我已经读过这个

需要<regex>头和名称空间std :: tr1

我可以使用<regex>标头进行编译(虽然它强制我使用标记,-std=c++0x-std=gnu++0x

但是,当我尝试在程序中使用std::tr1命名空间时,编译失败并显示tr1“不是命名空间名称”的消息。我不能做像这样的事情,

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

我已经读过自gcc 4.3.0以来支持TR1正则表达式。我通过gcc 4.4.5使用g ++。

我错过了什么吗?

1 个答案:

答案 0 :(得分:8)

<强> g++ 4.7 doesn't implement regular expressions yet.

尽管如此,在C ++ 11中,regex已从名称空间std::tr1移至std。因此,您应该写std::tr1::regex

而不是std::regex
std::regex rx("mypattern");

我不知道4.7之前哪些g ++版本也适用。但this ideone example与g ++ 4.7编译良好。但是,请记住,在此编译器版本中未实现正则表达式实现。