Зачем изобретать велосипед? Стандартная библиотека C (также доступна на C ++) имеет функцию, которая делает именно это:
char* p;
long converted = strtol(s, &p, 10);
if (*p) {
// conversion failed because the input wasn't a number
}
else {
// use converted
}
Если вы хотите работать с дробями или научными обозначениями, используйте вместо этого strtod
(вы получите double
результат).
Если вы хотите разрешить шестнадцатеричные и восьмеричные константы в стиле C / C ++ ("0xABC"
), вместо этого укажите последний параметр 0
.
Ваша функция может быть записана как
bool isParam(string line)
{
char* p;
strtol(line.c_str(), &p, 10);
return *p == 0;
}