Alter Thread, aber trotzdem ... Man sollte sich bewusst sein, dass die Verwendung eines std::locale
macht die Zeichenkette "hübsch", komplett mit korrektem Dezimalpunkt, Tausendertrennzeichen und so weiter, je nach Plattform und Gebietsschema. Höchstwahrscheinlich ist die Verwendung von imbue()
bricht das Parsen der Zeichenkette ab, nachdem sie formatiert wurde. Zum Beispiel:
std::ostringstream s;
std::locale l("fr-fr");
s << "without locale: " << 1234.56L << std::endl;
s.imbue(l);
s << "with fr locale: " << 1234.56L << std::endl;
std::cout << s.str();
Ergibt die folgende Ausgabe:
without locale: 1234.56
with fr locale: 1 234,56
Verwendung von strtod()
oder ähnliches auf die zweite Zeichenkette wird wahrscheinlich nicht sehr gut funktionieren ... Außerdem ist das Leerzeichen zwischen "1" und "2" in der zweiten Ausgabezeichenfolge ein nicht umbrechendes Leerzeichen, was die Zeichenfolge noch hübscher macht :-)