String to Float

Convert a number with a floating point in string format to a float.

float StringToFloat(string input)
{
    float ret = 0.0f;
    bool fp = false, neg = false;
    int fpcount = 0;
 
    for (size_t i = 0; i < input.size(); i++)
    {
        if (0 == i && '-' == input[i])
        {
            neg = true;
            continue;
        }
 
        if (fp)
            fpcount++;
 
        if ('.' != input[i])
        {
            int curr = static_cast<int>(input[i]) - 48;
            if (curr < 0 || curr > 9)
                throw "Bad characters in the input.";
 
            ret *= 10;
            ret += curr;
        }
        else
        {
            if (!fp)
                fp = true;
            else
                throw "Multiple '.' in the input.";
        }
    }
 
    if (fp)
        ret /= pow(10, fpcount);
    if (neg)
        ret *= -1;
 
    return ret;
}