Я хотел бы преобразовать строку в удвоение. Я делаю это так:
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).
Если преобразование не выполняется, возвращается ноль и значение nptr
хранится в месте, указанном endptr.
По крайней мере, так говорит страница руководства.