Несколько вещей здесь.
Во-первых, вашей строке регулярных выражений необходимо экранировать \
. В конце концов, это все еще строка C ++.
regex rgx("\\w");
Кроме того, регулярное выражение \w
соответствует только одному «символу слова». Если вы хотите найти слово целиком, вам нужно использовать:
regex rgx("\\w+");
Наконец, чтобы перебрать все возможные совпадения, вам нужно использовать итератор. Вот полный рабочий пример:
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
string seq = "Some words. And... some punctuation.";
regex rgx("\\w+");
for( sregex_iterator it(seq.begin(), seq.end(), rgx), it_end; it != it_end; ++it )
cout << (*it)[0] << "\n";
}