Umwandlung eines stringstream in eine float-Zahl
-
Hallo,
ich habe in einer Datei lauter float-Zahlen (21,444 12,1111 ...). Diese lese ich erst in ein stringstream und dann will ich sie in eine float-Zahl umwandeln. Ich habe da folgende Anweisung:
stringstream val; float zahl; //... Einlesen der Werte (so dass dann z.B. val = 21,444 ist) val >> zahl;Das Problem ist jetzt, dass bei dieser Anweisung die Nachkommastellen abgeschnitten werden (da ein Komma und kein Punkt in der Ursprungsdatei steht). Wie kann ich das Problem beheben, so dass dann die komplette Zahl in zahl gespeichert wird?
DANKE!
-
Eine Möglichkeit: Du gibst dem Stream ein deutsches Locale mit.
Zweite Möglichkeit: Bevor du deine Zahlenreihe in den Stringstream packst, jagst du einmal std::replace() drüber und ersetzt die Kommas durch Punkte.
-
warum nicht direkt die float zahlen einlesen ?
std::istream file("meine_datei"); file.imbue(std::locale("de_DE")); vector<float> content( istream_iterator<float>(file), istream_iterator<float>());
-
ronny schrieb:
file.imbue(std::locale("de_DE"));Das mit der locale war doch CStolls erste Moeglicvhkeit. Hab ich was verpeilt??
-
ronny schrieb:
warum nicht direkt die float zahlen einlesen ?
std::istream file("meine_datei"); file.imbue(std::locale("de_DE")); vector<float> content( istream_iterator<float>(file), istream_iterator<float>());Wenn du wirklich etwas einlesen willst (was dein Code nicht tut) statt einfach nur eine Funktion zu deklarieren (was dein Code tut), dann musst du entweder ein paar Klammer ergänzen oder auf benannte Variablen umsteigen.