我正忙着使用Boost Xpressive并且遇到以下代码片段的麻烦
#include <iostream>
#include <string>
#include <boost/xpressive/xpressive.hpp>
using namespace std;
using namespace boost::xpressive;
int main()
{
string s("123");
sregex rex = _d;
rex >>= _d;
smatch what;
regex_search(s, what, rex);
cout << "Match: " << what[0] << endl;
return 0;
}
运行此程序的结果是1
与预期12
的匹配。 sregex::operator>>=
是否具有不同的含义/使用我直观假设的内容?我希望这会产生与sregex
类似的_d >> _d
。
答案 0 :(得分:1)
Xpressive不支持&gt;&gt; =运算符。这段代码完全编译的事实可能被认为是一个错误。尝试:
rex = rex >> _d;
然而,像这样建立正则表达式会使正则表达式表现不佳。