strtod как проверить, является ли 0 ошибкой или хорошим значением

Я хотел бы преобразовать строку в удвоение. Я делаю это так:

bool String2ValueType(const std::string & a_str_value_type, double & a_result)
{
if(a_str_value_type.empty())
return false;

char * end;
double result = strtod(a_str_value_type.c_str(), &end);
if(*end!=NULL)
return false;
a_result = result;
return true;
}

Как я могу проверить, хорошо ли результат, или нет, если его значение равно 0?
например, я получу 0, если я отправлю строку («0»), и это не ошибка.
Но я также могу отправить некоторую другую строку — это число, но оно не будет преобразовано, и я также получу 0 (ошибка) (я говорю о случае, когда * end == 0).

0

Решение

Если преобразование не выполняется, возвращается ноль и значение nptr
хранится в месте, указанном endptr.

По крайней мере, так говорит страница руководства.

4

Другие решения


По вопросам рекламы [email protected]