SRC: реализация atof
От: aboo Россия  
Дата: 13.10.02 12:03
Оценка:
Спасибо orangy за реализацию atoi:
http://www.rsdn.ru/Forum/Message.aspx?mid=92149&only=1
Автор: orangy
Дата: 29.08.02


Код:
template<typename iterator>
double new_atof(iterator s)
{
    double sign(1), val(0);
    int d(0);
    if (s) while ((*s < '0' || *s > '9') && *(++s)); else return 0.0;
    sign*=(*s == '-' && ++s) ? -1.0 : ((*s == '+' && ++s),1.0);
    while ((*s >= '0' && *s <= '9') || (*s == '.' && d < 1))
    { 
        val += *s == '.' ? (++d, 0.0) : d > 0 ? ((++d, val*=10.0), *s-'0') : (val*=10.0, *s-'0');
        ++s;
    }
    double den(1);
    if(d > 0) while(--d) den*=10.0;
    return (val*sign)/den;
}


Пример использования:
    char str[] = "Price is 5964.599$. Buy NOW!";
    double g = new_atof<char*>(str);


Буду признателен за любую дельную критику...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.