с++ регулярное выражение для char
Подскажите пожалуйста, как можно проверить содержит ли переменная char *hBuff 11ти значное число?
Ответы (1 шт):
А заинтересовало, насколько и в самом деле регулярные выражения - из пушки по воробьям...
Вот две функции для выполнения запрашиваемой проверки...
Кстати, молодой человек! это ответ и на ваш вопрос тоже... (с) Анекдот
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 оправдано только для особо укрепленных дотов :)