Netter Code, ich würde aber nicht empfehlen, in diesem Fall das Rad neu zu erfinden.
Unter C bieten sich die Funktion der strtod() Familie an (siehe

)
und unter C++ würde man eher einen std::stringstream verwenden, oder falls man C mag / errno verwenden möchte / mit char arrays arbeitet, auch strtod().
hier ein std::stringstream Beispiel:
Code:
#include <sstream>
#include <iostream>
int main()
{
std::string foo("3.141592");
std::stringstream s(foo);
float f;
s >> f;
std::cout << f << std::endl;
return 0;
}
Das ist eleganter und vermutlich auch effizienter als eine eigene Implementierung
Grüße,
cheesecake