Вот мой код:
int main()
{
string s = "abc1010101bca10";
int c = 0;
string subject(s);
try {
regex re("10+1");
sregex_iterator next(subject.begin(), subject.end(), re);
sregex_iterator end;
while (next != end) {
smatch match = *next;
cout << match.str() << "\n";
c++;
next++;
}
}
catch (std::regex_error& e) {
cout << "Error in regex\n";
}
cout << c << "\n";
return 0;
}
Я пытаюсь найти вхождение 1{0}+1 в свою строку.
Для ввода: abc1010101bca10
Счетчик вывода должен быть равен 3, но приведенный выше код дает его как 2.
Я думаю, что sregex_iterator
вызывает здесь проблему, поскольку он напрямую пропускает совпадающую строку.
Текущий выход:
101
101
2
Должно быть: 101 101 101 3
Пожалуйста, дайте мне знать, где я ошибаюсь.