Подсчитать наибольшее количество идущих подряд цифр (С++)

Нужно подсчитать наибольшее кол-во цифр в задаваемом тексте. Думаю делать так: проверять каждый символ на то, цифра ли это, подсчитать цифры до символа-не цифры, записывая максимальное полученное кол-во в отдельную переменную и перезаписывать её каждый раз, когда найдётся большее количество, в конце вывести эту переменную как результат. Написал нижеследующую программу, но выдаёт ошибку lvalue required as left operand of assignment

#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
int main()
{
    SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
    string a;
    int i, x = 0, xmax = 0;
    cout << "Введите предложение: " << endl;
    getline(cin, a);
    for (i=0; i < a.npos; i++)
    {
        if (a[i]='1' or a[i]='2' or a[i]='3' or a[i]='4' or a[i]='5' or a[i]='6' or a[i]='7' or a[i]='8' or a[i]='9' or a[i]='0')
        {
            x++;
        }
        else
        {
            x=0;
        }
        if (x>xmax)
        {
            xmax=x;
        }
    }
    cout << "Наибольшее кол-во чисел, идущих подряд: " << x << endl;
    system("pause");
    return 0;


}

Ответы (1 шт):

Автор решения: NkL322

В C++ логическое или реализовано как "||", а логическое и как "&&". Также вопрос, зачем использовать npos, если можно использовать lenght? Если углубиться в неявные преобразования типов, то можно вспомнить, что символ можно представить и в числовом эквиваленте. И наконец, вместо x нужно вывести xmax, так как x является промежуточной переменной

Наиболее удачным решением будет следующее

#include <iostream>
#include <cstring>
#include <windows.h>

using namespace std;
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    string a;
    int x = 0, xmax = 0;
    cout << "Введите предложение: " << endl;
    getline(cin, a);
    for (int i = 0; i < a.length(); i++) {
        if (a[i] >= '0' && a[i] <= '9') {
            x++;
        }
        else {
            x = 0;
        }
        if (x > xmax) {
            xmax = x;
        }
    }
    cout << "Наибольшее кол-во чисел, идущих подряд: " << xmax << endl;
    system("pause");
    return 0;
}
→ Ссылка