Как определить, начинается ли строка с числа?
Для того чтобы определить, что строка является числом, обычно предлагается следующее:
bool isParam(string line) { char* p; strtol(line.c_str(), &p, 10); return *p == 0; }
К сожалению для меня *p указывает на первый символ, если внутри нет числа, то есть нет 0
Как я должен использовать strtol ()?
Что я уже пробовал:
Затем я попробовал это, что, кажется, работает, если кто-то не пишет десятичные дроби, начинающиеся с точки:
bool isNumber(string str1) { char p = str1.c_str()[0]; return (p >= '0' && p <= '9'); }
После поста Ричарда Маккатчана это сработало для меня:
bool isnumber(string str1) { return (isdigit(str1.c_str()[0])>0);}
0x01AA
И вы проверили также случай, когда число начинается с". " или " + "или" -"?
:-)