我正在尝试将“TR1”正则表达式扩展用于某些 C++ 字符串解析。
我已经读过 <regex> header 和命名空间 std::tr1 为此需要

我可以使用 <regex> header 进行编译(尽管它迫使我使用标志、 -std=c++0x-std=gnu++0x )

但是,当我尝试在我的程序中使用 std::tr1 命名空间时,编译失败并显示 tr1“不是命名空间名称”的消息。我不能做这样的事情,
std::tr1::regex rx("mypattern");
我读过自 gcc 4.3.0 起就支持 TR1 正则表达式。我正在通过 gcc 4.4.5 使用 g++。

我错过了什么吗?

最佳答案

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 编译得很好。但是,请记住,此编译器版本中未实现正则表达式实现。

关于C++ TR1 正则表达式不可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14839583/

10-11 19:07