Das Setzen von Gebietsschemas unter OS X stürzt ab

8

Der folgende Code funktioniert unter Linux gut, löst aber eine Ausnahme unter OS X 10.7 aus:

%Vor%

Die Ausgabe unter OS X ist:

  

locale::facet::_S_create_c_locale name nicht gültig

Allerdings sagt der Standard explizit, dass

  

Der Satz gültiger Zeichenfolgenargumentwerte ist "C" , "" und alle implementierungsdefinierten Werte.

Was auch immer das obige Verhalten verursacht, verletzt den Standard.

Der verwendete Compiler ist clang ++ 3.1 (tags / Apple / clang-318.0.58); Ich habe es auch mit GCC 4.7, installiert über Homebrew, mit dem gleichen Ergebnis versucht.

Können andere Personen dieses Problem bestätigen? Was verursacht es? Mache ich etwas falsch? Ist das ein Fehler in OS X?

(Vielleicht bezieht sich auf ein anderes xlocale Problem , aber die Fehler sind tatsächlich völlig anders.)

    
Konrad Rudolph 25.06.2012, 13:12
quelle

2 Antworten

2

Ich glaube nicht, dass du xlocale benutzt. Ich glaube, dass Ihr Problem ist mit libstdc ++, die eine andere Locale-Support-Bibliothek verwendet, die nicht unter OS X unterstützt wird, wie die Frage EitanT zu Staaten.

Wenn Sie zu libc ++ wechseln, wird Ihr Programm funktionieren.

    
bames53 25.06.2012, 15:13
quelle
0

Das Poster darüber ist korrekt ... das Problem ist mit libstdc ++. Ich wollte meine Antwort hinzufügen, weil es nicht einfach ist, OS X mit libc ++ zu verlinken und brauchte dafür über eine Stunde, um herauszufinden.

Das Aufrufen des Compilers / Linkers nach g++ -libstd=libc++ oder nach clang++ -libstd=libc++ oder nach dem Alias c++ -libstd=libc++ wird fehlschlagen.

Die Lösung zum Kompilieren einfacher Programme von der Befehlszeile aus, anstatt mit dem zusätzlichen Aufwand von Xcode zu verwirren, besteht darin, Xcode zu erlauben, die Verknüpfung zu handhaben, indem er den Befehl xcrun clang++ -stdlib=libc++

verwendet

xcrun erlaubt Xcode, die Werkzeugkette zu verwalten und erstellt eine erfolgreiche ausführbare Datei, in der cout.imbue(locale(foo)) erfolgreich funktioniert.

    
user3176017 11.03.2014 04:54
quelle

Tags und Links