String zu Float

DAV1987

Grünschnabel
Ich hab ein problem bei dem Umwandel von String zu Float werten.

Ich hab schon die Hilfe durchsucht, aber nichts gefunden das man in der Console einsetzen kann.

Wär ganz cool wenn ihr mir da mal helfen könnt, weil mein Lehrer auch keine ösung wusste.
 
Hallo,

C++:
#include <iostream>
#include <sstream>

using namespace std;

int main(){
    istringstream is("3.14");
    float pi;
    is >> pi;
    cout << pi << endl;
}

Gruß,

RedWing
 
Hi, ich hätte zu diesem Thema auch ne Frage:

Ich hab einen string mit 6 zeichen, jedes davon ein hex wert. Den will ich per istringstream in einer long variable speichern (oder auch auf jeglich andre art, hautsach es geht) Dannach soll dieser wert per berechnung in einer double variable gespeichert werden.
Dabei habe ich das problem, dass dies meistens funktioniert, allerdings ab und zu ich eine unhandled exception bekomme (System.Runtime.InteropServices.SEHException).

Dazu muss ich noch folgendes erklären:

Ich kompiliere und teste das programm an unterschiedlichen PCs, da ich bestimmte Hardware dazu benötige, und dort wo die HW ist gibt es kein VS (nutze Visual C++ .net).
Desweiteren kommen die string daten von einem canbus, sprich schnell sehr viele strings, allerdings kann der fehler nicht mit der Geschwindigkeit des Programms zu tun haben, da im Antowrtstring auch noch andre Daten enthalten sind und diese korrekt auf diese weisse ausgelesen werden.


Hier der Versuch mit istringstream
Code:
is.str("ABCDEF"); //Beispiel
is >> hex >> tempTimeStamp;
response->messageArray[countMessages].timestamp = static_cast<double>(tempTimeStamp)*51.2/1000.0;

Anderer Versuch mit scanf, mit selben resultat
Code:
sscanf(temp.c_str(), "%ld" , &tempTimeStamp);
response->messageArray[countMessages].timestamp = static_cast<double>(tempTimeStamp)*51.2/1000.0

Das komische ist auch, wenn ich den string in eine float/double Variable speichere, bekomme ich keine exception.
Ach ja, die exception resultiert auch nicht aus der Berechnung, bzw der zuweisung, sondern alleine an der >> hex >>, bzw scanf.

Ok, hoffe es war einigermaßen verständlich, und würde mich sehr freuen, wenn mir einer helfen könnte
 
Zurück