12

我可以从中获取带有正则表达式的字符串std::regex吗?或者如果我以后想使用它,我应该将它保存在其他地方吗?

在升压中,您可以这样做:

boost::regex reg("pattern");
string p = reg.str();

或使用 << 运算符

cout << reg;将打印模式

但是std::regex没有 str() 或 operator<<。我应该将字符串保存在其他地方还是找不到?

在调试器中,我可以看到std::regex.

4

2 回答 2

8

我刚刚查看了 N3225,第 28.4 节(标题<regex>概要),确实,basic_regex模板没有成员函数str,也没有operator<<提供。

第 28.8/2 段对此提供了一些见解

类型特化的对象 basic_regex负责将charT 对象序列转换为内部表示。没有指定这种表示采用什么形式,也没有指定对正则表达式进行操作的算法如何访问它。

我的理解是,basic_regex可以构建的标准要求const charT *但不需要实现来保留这个字符串。

于 2010-12-21T15:54:46.540 回答
4

MSDN 文档似乎表明没有可公开访问的方法来从构造对象中检索正则表达式模式,因此我会说您需要自己保存字符串。

于 2010-12-21T15:53:45.153 回答