?
SeppJ schrieb:
Hacker schrieb:
Michael E. schrieb:
Die Lösung wurde doch schon genannt: Benutze den compilerspezifischen String.
Danke ! Aber wo wurde die denn genannt? Im anderen Link?
Also compilerspezifisch ist nicht ganz richtig, eher plattformspezifisch. Plattformunabhängig sind nur die locales "C" (im Prinzip US-Englisch) und "" (die Systemlocale). Die anderen musst du eben nachschlagen. Wobei ich noch nie den Grund verstanden habe, wieso man etwas anderes nehmen sollte als "" (oder "C"), denn ich will nicht, dass ein Programm plötzlich eine ungewöhnte Locale benutzt, bloß weil es von einem Deutschen programmiert wurde. Da ist doch der ganze Sinn von Loacales futsch, wenn das Programm nicht die Systemlocale (und damit meine Sprache) benutzt (oder wenn es sein muss die Standardlocale), sondern die Sprache des Programmierers. Wieso hätte mich als Nutzer zu interessieren, wie der Programmierer in der Schule seine Dezimaltrennzeichen geschrieben hat? Oder noch schlimmer wird's wenn das Programm noch einen andere Zeichensatz erzwingt als den meiner Ausführungsumgebung. Ich wüsste nicht einmal aus dem Kopf, wie ich in meiner Konsole ein UTF-32 Zeichen tippen kann.
Eine andere locale wird z.B. benötigt, wenn mann eine Textdatei sortieren will, die Sonderzeichen enthält. Wenn man z.B. die Länge der Vokale ausdrücklich darstellen will (-> Latein) benutzt man ā und ă, die zwar beide aus dem lateinischen Zeichensatz stammen, aber bei Verwendung der deutschen Standard-locale nicht alphabetisch als a einsortiert werden. Am besten ist es in diesem Fall, eine eigene locale als Kopie der deutschen locale zu erzeugen und darin die eigene Sortierfacette einzubauen. Siehe Stroustrup, Der C++ Programmierer, Anhang locales.