Frage zur Anwendung von <locale>
-
Moinsen. Ich brauche Hilfe zum Thema "locale". Ich möchte über ein Konsolenprogramm Ganzzahlen einlesen und diese dann mit tausender Trennzeichen ganz einfach über "cout" wieder ausgeben. Ich kann mich dran erinnern, dass ich das vor Jahren mal gesehen habe, dass das mit der Funktion imbue() funktioniert, die direkt über "cout" aufgerufen werden konnte. Dies funktioniert bei mir allerdings nicht. Die Methode wird mir überhaupt nicht angezeigt auch wenn ich die <locale> als Header-Datei implementiert habe. Ich arbeite mit Qt 5.9.0. Kann mir da jemand auf die Sprünge helfen?
-
siehe z.B. https://stackoverflow.com/questions/43482488/how-to-format-a-number-with-thousands-separator-in-c-c, erste Antwort hat ein Beispiel mit imbue.
Ansonsten schau dir auch mal fmt an. https://hackingcpp.com/cpp/libs/fmt.html#integers-locale -> Abschnitt "Locale-Aware Formatting"
-
vielen Dank für die Hilfe. Ich hab probiert über
locale::global(locale( "de-DE"));
die lokale du definieren. Ich bekomme aber jetzt die Fehlermeldung
terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid
kann mir jemand sagen was ich falsch mache?
-
Locale Names sind, soweit ich weiß, implementation defined, d.h. es gibt keine einheitlichen Namen. Du könntest es aber mal mit "de_DE" oder "de_DE.UTF-8" probieren.
-
Hab ich alles schon ausprobiert es kommt immer der gleiche fehler
-
Bist du eventuell unter windows unterwegs und verwendest MSVC?
Dann funktioniert AFAIK de-DE/de_DE nichtaus: https://stackoverflow.com/questions/4406895/what-stdlocale-names-are-available-on-common-windows-compilers
Accepts locale names as "Language[_Country][.Codepage]" for example "English_United States.1251" Otherwise would throws. Note: codepage can't be 65001/UTF-8 and should be consistent with ANSI codepage for this locale (or just omitted)
-
Ja bin unter Windows und verwende Qt 5.9.0. Danke für den Tipp ich lese es mir gleich mal durch