std :: regex эквивалент глобального модификатора '/ g'

В Perl я могу сделать следующее:

$text = '1747239';
@matches = ($text =~ m/(\d)/g);
# @matches now contains ('1', '7', '4', '7', '2', '3', '9')

Используя сопоставление регулярных выражений C ++, как лучше всего воспроизвести это поведение, чтобы что я получу набор совпадений, включающий все совпадения?

У меня есть это на данный момент: -

compiledRegex = std::regex(regex, std::tr1::regex_constants::extended);
regex_search(text, results, compiledRegex);

int count = results.size();
// Alloc pointer array based on count * sizeof(mystruct).
for ( std::cmatch::iterator match = results.begin(); 
      match != results.end(); 
      ++match )
{
    // Do something with match;
}

Однако это даст мне только первое совпадение, точно так же, как Perl без / g, что нормально, но я бы как эффект / g.

Итак, есть ли хороший способ сделать это, или я должен продолжать запускать регулярное выражение снова и снова?

6
задан Laurel 10 September 2016 в 00:04
поделиться