# String zu Float



## DAV1987 (27. April 2006)

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.


----------



## RedWing (27. April 2006)

Hallo, 

das geht entweder mit atof wenn du in C programmierst,
oder in C++ mit einem input string stream

http://www.cplusplus.com/ref/cstdlib/atof.html
http://www.cplusplus.com/ref/iostream/istringstream/

Gruß

RedWing


----------



## DAV1987 (29. April 2006)

Wer ich mir mal durchgucken...das meiste sagt mit aber auf den ersten Blick nix 

Bin halt noch ein c++


----------



## RedWing (1. Mai 2006)

Hallo,


```
#include <iostream>
#include <sstream>

using namespace std;

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

Gruß,

RedWing


----------



## mslap (3. Mai 2006)

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

```
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

```
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


----------

