Парсинг std::string
Цель: проверка строки на числа.
Требуется вводить строку до тех пор, пока в ней не будут исключительно числа. Ранее был реализован перебор всех элементов char массива(проверяется каждый элемент по таблице ASCII). Как в такой ситуации быть с std::string? Возможно есть более простые методы. Буду признателен за помощь.
Код, использованный раннее:
bool CheckingNumber(char* destination) {
for (int i = 0; i < strlen(destination) - 1; i++) {
if (destination[i] < 48 || destination[i] > 57) { return false; break; }
else { return true; }
}
return { };
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
В чем проблема? Убедиться, что есть не цифра? Тогда можно, например, так.
bool CheckingNumber(const string& destination) {
return s.find_first_not_of("0123456789") == s.npos;
}
В принципе, можно через регулярные выражения, но это из пушки по воробьям...
Кстати, ваш код тоже можно упростить:
bool CheckingNumber(char* destination) {
return strspn(destination,"0123456789") == strlen(destination);
}