Xpressive >> = Оператор - PullRequest
       18

Xpressive >> = Оператор

2 голосов
/ 11 февраля 2011

Я играю с 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.

1 Ответ

1 голос
/ 27 января 2012

Xpressive не поддерживает оператор >> =.Тот факт, что этот код компилируется вообще, можно считать ошибкой.Попробуйте:

rex = rex >> _d;

Однако создание подобного регулярного выражения приведёт к ухудшению производительности регулярного выражения.

...