2

我在玩 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.

4

1 回答 1

1

Xpressive 不支持 >>= 运算符。这段代码完全编译的事实可以被认为是一个错误。尝试:

rex = rex >> _d;

但是,像这样零碎地构建正则表达式会使正则表达式表现不佳。

于 2012-01-26T21:31:03.483 回答