Оба atoi
и atof
более или менее сломаны;нет никакого способа сделать какую-либо проверку ошибок.В большинстве случаев самым простым решением было бы использовать strtod
:
char* endPtr;
errno = 0;
value = strtod( input, &endPtr );
if ( errno != 0 || *skipSpaces( endPtr ) != '\0' )
// Illegal input, conversion failed.
(я обычно фанат istringstream
, но в этом случае это кажется излишним.)