Написал функцию, которая проверяет каждый символ строки до тех пор, пока не встретит не цифру или терминирующий ноль. Если встречается не цифра, то функция возвращает 0. Если на всём пути не встретиалсь не цифра, возвращает 1.
Проблема в том, что она не работает со строками, которые содеражт русские символы, так как их численные значения не входят в диапозон от -1 до 255.
int is_number(const std::string& s)
{
int count = 0;
while (s[count])
{
if (isdigit(s[count]))
++count;
else
return 0;
}
return 1;
}
То, что делаете вы, проще сделать так:
bool is_number(const std::string& s)
{
return !s.empty() && (s.find_first_not_of("0123456789") == s.npos);
}
Ваша проблема, думаю, в том, что isdigit()
работает с тем, что "представимо как unsigned char
", так что попробуйте так -
if (isdigit(static_cast<unsigned char>(s[count])))
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся со следующей функцией, автор использует её при записи в данных вvtk файл
Есть 2 связанных списка select со значениями от и до, реализованные с помощью select2:
Подскажите что я делаю неправильно и в чем моя ошибка
Как можно сделать такую навигационную панель? ширина может увеличиваться смотря от названия категории