В C ++ boost :: lexical_cast пригодится для этого:
#include <boost/lexical_cast.hpp>
#include <iostream>
bool IsNumber(const char *s) {
using boost::lexical_cast;
try {
boost::lexical_cast<int>(s);
return true;
} catch (std::bad_cast&) {
return false;
}
}
int main(int ac, char **av) {
std::cout << av[1] << ": " << std::boolalpha << IsNumber(av[1]) << "\n";
}
РЕДАКТИРОВАТЬ : Если Boost недоступен, попробуйте следующее:
bool IsNumber2(const char *s) {
std::istringstream stream(s);
stream.unsetf(std::ios::skipws);
int i;
if( (stream >> i) && stream.eof() )
return true;
return false;
}