3

我正在尝试将“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++。

我错过了什么吗?

4

1 回答 1

8

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

但尽管如此,在 C++11regex中已从命名空间std::tr1移至std. 所以,std::tr1::regex你应该写std::regex

std::regex rx("mypattern");

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

于 2013-02-12T18:52:30.517 回答