[std::locale] kennt locale nicht
-
void toUpper(std::string& str) { std::locale loc("de_AT"); for(int i=0; i<str.size(); i++) str[i] = std::toupper(str[i], loc); }ein aufruf dieser funktion wirft einen std::runtime_error.
what(): locale::facet::_S_create_c_locale name not validwenn ich mir mit 'locale -a' alle locales aufliste, dann kommen da u.a.
de_AT de_AT.ISO8859-1 de_AT.ISO8859-15 de_AT.UTF-8vor.
das ganze müsste also klappen. warum gehts trotzdem nicht?
ich verwende den gcc version 4.0.1 (Apple Inc. build 5493).
-
Ich habe ein ähnliches Problem, und es sieht so aus als ob in der STL-Implementierung auf "Mac OS" nur das Locale "C" unterstützt wird. Noch nicht mal eine Default-Initialisierung eines Locale funktioniert, wenn nicht zufällig "C" als System- Locale gesetzt ist. Siehe auch:
http://stackoverflow.com/questions/1745045/stdlocale-breakage-on-macos-10-6-with-langenus-utf-8Selbst boost::filesystem::wpath hat damit ein Problem. Es würde mich interessieren, wenn jemand eine bessere Lösung dafür hat. (außer nur "C" als Locale zu verwenden.)
DJohn
-
hallo.
ja, das hab ich auch schon gefunden. scheint wohl aussichtslos zu sein.
ich werde vorerst mit locales nicht mehr arbeiten, da die mir einfach zu platformabhängig sind.