我正在尝试将'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 ++。
我错过了什么吗?
答案 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编译良好。但是,请记住,在此编译器版本中未实现正则表达式实现。