如何在VC++ 2010中从std :: regex获取带有模式的字符串

Mar*_*ski 12 c++ regex visual-c++-2010 c++11

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

在提升中你可以这样做:

boost::regex reg("pattern");
string p = reg.str();
Run Code Online (Sandbox Code Playgroud)

或使用<<运算符

cout << reg;将打印图案.

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

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

ice*_*ime 8

我刚看了N3225,第28.4节(标题<regex>概要),实际上,basic_regex模板没有成员函数str,并且没有operator<<提供.

第28.8/2段对此提出了一些看法:

类型特化的对象 basic_regex负责将charT 对象序列转换为内部表示.未指定此表示形式采用何种形式,也未指定如何通过正则表达式操作的算法访问它.

我理解的是标准的命令basic_regex可以构造const charT *但不需要实现来保持这个字符串.