char* to float
-
hi alle zusammen.
wie schon am titel zu erkennen ist möchte ich einen string in ein float umwandeln ... gibt es da schon irgendwelche std funktionen, falls betriebssystem gebunden, ich benutze win, aber dann wär ich im falschen board
Ne eigentlich will ich nur wissen ob ich mir da was schreiben muss und mich mit dem ganzen mathematischen zeugs auseinandersetzen muss oder obs einer von euch oder sonstwer schonmal zuvor gemacht hat
-
(Folgender Sourcecode ist aus Exceptional C++ Style von Herb Sutter ( seiten 22 u 23 ): )
template< typename Target , typename Source > Target lexical_cast( Source arg ) { std::stringstream interpreter; Target result; if(!(interpreter << arg) || !(interpreter >> result) || !(interpreter >> std::ws).eof()) throw bad_lexical_cast(); return result; }hier müsstest du bad_lexical_cast entweder selber machen, oder durch eine anderen typ für die Exception austauschen.
Mögliche Anwendung:
#include <iostream> #include <sstream> #include <stdexcept> template< typename Target , typename Source > Target lexical_cast( Source arg ) { std::stringstream interpreter; Target result; if(!(interpreter << arg) || !(interpreter >> result) || !(interpreter >> std::ws).eof()) throw std::exception(); return result; } int main() { float fl = lexical_cast<float>("12.2354"); std::cout << fl << std::endl; }
-
Vergessen wurde bei dir der zweite Template-Parameter, in dem Fall char* oder std::string.
-
pumuckl schrieb:
Vergessen wurde bei dir der zweite Template-Parameter, in dem Fall char* oder std::string.
Es wurde gar nichts vergessen. Der wird automatisch vom Compiler erkannt
BR
-
danke klappt super.
-
die suchfunktion wirkt wahre wunder. dies ist wohl eines der am häufigsten gefragten themen, und darum sollte man wenigstens den faq eintrag bzw 1000de links dazu bekommen
-
tut mir leid, dass dieser eintrag für euch anscheinend ein duplikat war, aber such doch mal nach "char *float", "char float", "char *to float" usw in der suche.
also ich habe nichts gefunden.