2010-12-21 65 views
12

我可以从std::regex获得正则表达式的字符串吗?或者如果我想稍后使用它,我应该将它保存在别的地方吗?如何从VC++ 2010中的std :: regex获取字符串

在提升,你可以这样做:

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

或使用< <操作

cout << reg;将打印模式

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

在调试器中我可以看到什么在std::regex

+0

请编辑这个问题,我很怀疑这给`“模式”`将打印`aaa`。 – Motti 2010-12-21 18:58:08

回答

8

我只是看着在N3225,28.4节(头<regex>简介),实际上,该basic_regex模板没有成员函数str,并没有提供operator<<

该段28.8/2提供上这一点洞察:的 basic_regex型专业化

对象负责 charT 对象序列转换为的内部表示。 它没有指定这个 表示哪一种形式,也不是它是如何通过 上 正则表达式操作的算法进行访问。

我的理解是,标准授权basic_regex可以从const charT *建造,但不要求执行,以保持此字符串。

+0

为什么C++让事情变得如此困难...... – user1633272 2017-05-04 09:24:41

4

The MSDN docs似乎表明没有公开访问的方式从构造对象中检索正则表达式模式,所以我会说你需要自己保存字符串。

相关问题