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

roc*_*tas 3 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 ++.

我错过了什么吗?

lee*_*mes 8

g ++ 4.7还没有实现正则表达式.

但尽管如此,在C++ 11 regex中已经从命名空间std::tr1转移到了std.所以,而不是std::tr1::regex,你应该写std::regex:

std::regex rx("mypattern");
Run Code Online (Sandbox Code Playgroud)

我不知道4.7之前的哪些g ++版本也适用.但这个ideone示例使用g ++ 4.7进行编译.但是,请记住,此编译器版本中未实现正则表达式实现.

  • 我对"<regex>"但未实现这一事实感到不安.它编译但行为无稽之谈.如果你不知道那很危险. (6认同)
  • @leemes - 欢迎来到自由软件的世界.你得到你所付出的. (2认同)