如何从 VC++ 中的 std::regex 获取带有模式的字符串2010年
我可以从 std::regex
获取带有正则表达式的字符串吗?或者如果我以后想使用它,我应该将其保存在其他地方吗?
在 boost 中你可以这样做:
boost::regex reg("pattern");
string p = reg.str();
或者使用 <<运算符
cout << reg;
将打印模式。
但在 std::regex 中没有 str() 或运算符<<。我应该将字符串保存在其他地方还是找不到它?
在调试器中我可以看到 std::regex 中的内容。
Can I get the string with regular expression from std::regex
? Or should I save it somewhere else if I want to use it later?
In boost you can do this:
boost::regex reg("pattern");
string p = reg.str();
or use << operator
cout << reg;
will print pattern.
but in std::regex
there is no str() or operator<<. Should I save my string somewhere else or I just can't find it?
In debugger I can see what's in std::regex
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我刚刚查看了 N3225 第 28.4 节(标题
概要),实际上,basic_regex
模板没有成员函数str
,并且没有提供operator<<
。第 28.8/2 段对此提供了一些见解:
我的理解是,标准要求
basic_regex
可以从const charT *
构造,但不要求实现保留该字符串。I just looked in N3225, section 28.4 (header
<regex>
synopsis) and indeed, thebasic_regex
template has no member functionstr
, and there are nooperator<<
provided.The paragraph 28.8/2 provides a little insight on this :
What I understand is that the standard mandates that
basic_regex
can be constructed fromconst charT *
but does not require the implementation to keep this string.MSDN 文档似乎表明没有可公开访问的方法来检索来自构造对象的正则表达式模式,所以我想说你需要自己保存字符串。
The MSDN docs seem to show that there's no publicly accessible way to retrieve the regex pattern from a constructed object, so I would say that you need to save the string yourself.