Probleme mit std::locale



  • Hallo,

    ich wollte bestimmte Sachen mit 'nem std::locale Objekt machen allerdings funktioniert das nicht.
    Wenn ich den folgenden Code mit g++ kompiliere und anschließend ausführe fliegt eine Exception, da anscheind die de_DE nicht gefunden wird.

    Probiert habe ich das ganze unter Mac OS und unter Windows mit Mingw.

    Nun meine Fragen:
    - Gibt es im Standard überhaupt etwas auf das ich mich verlassen kann neben "" und "C"?

    - Wie kann ich sicherstellen das es de_DE gibt? Unter Mac OS liegt es z.B. unter /usr/share/locales

    - Ist das Format z.B. bei moneypunct bei "C" festgelegt und wenn ja, wie sieht das aus?

    Danke für eure Hilfe.

    #include <locale>
    
    int main(int argc, char ** argv) {
        std::locale locale("de_DE");
    }
    
    g++ main.cpp -o appl -Wall --pedantic
    
    $ ./appl
    terminate called after throwing an instance of 'std::runtime_error'
      what():  locale::facet::_S_create_c_locale name not valid
    


  • de_DE ist überhaupt nicht sichergestellt. Du kannst entweder mit #ifdef pro Plattform das Locale benutzen, oder du gibst dir alle Locales zur Laufzeit aus und der User wählt eine aus, die du dir dann dauerhaft (z.B. einer Configdatei) merkst.


Anmelden zum Antworten