[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 valid
    

    wenn 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-8
    

    vor.
    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-8

    Selbst 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.


Anmelden zum Antworten