с++ регулярное выражение для char

Подскажите пожалуйста, как можно проверить содержит ли переменная char *hBuff 11ти значное число?


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

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

А заинтересовало, насколько и в самом деле регулярные выражения - из пушки по воробьям...

Вот две функции для выполнения запрашиваемой проверки...
Кстати, молодой человек! это ответ и на ваш вопрос тоже... (с) Анекдот

regex rg("-{0,1}\\d{11}");

inline int match_r(const char * s)
{
    return regex_match(s,rg);
}

inline int match_p(const char * s)
{
    if (*s == '-') ++s;
    for(int i = 0; i < 11 ; ++i)
        if (!isdigit(*s++)) return 0;
    return *s == 0;
}

Генерирую 2 миллиона строк - из них 1 миллион верных, и 1 миллион неверных - и напускаю эти функции. Полная программа - здесь или здесь.

На ideone соотношение времен в 27 раз не в пользу регулярных выражений. На моей машине с VC++ 2019 результат еще более удручающий - простой код быстрее в 98 раз...

Словом, пользуясь военной терминологией, применение гаубицы regexp оправдано только для особо укрепленных дотов :)

→ Ссылка