Написал функцию, которая проверяет каждый символ строки до тех пор, пока не встретит не цифру или терминирующий ноль. Если встречается не цифра, то функция возвращает 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])))
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Столкнулся со следующей функцией, автор использует её при записи в данных вvtk файл
Есть 2 связанных списка select со значениями от и до, реализованные с помощью select2:
Подскажите что я делаю неправильно и в чем моя ошибка
Как можно сделать такую навигационную панель? ширина может увеличиваться смотря от названия категории