Gibt es Aktualisierungen der Lokalisierungsunterstützung in C ++ 0x?

Je mehr ich mit C ++ - Gebietsschemafacetten arbeite, desto mehr verstehe ich - sie sind kaputt.

std::time_get - ist nicht symmetrisch mitstd::time_put (wie in C strftime / strptime) und erlaubt nicht das einfache Parsen von Zeiten mit AM / PM-Markierungen.I entdeckt In letzter Zeit kann diese einfache Zahlenformatierung unter bestimmten Gebietsschemata (wieru_RU.UTF-8).std::ctype ist sehr simpel, wenn man annimmt, dass das Umstellen von Groß- und Kleinschreibung auf Zeichenbasis erfolgen kann (die Konvertierung in Groß- und Kleinschreibung kann die Anzahl der Zeichen ändern und ist kontextabhängig).std::collate - unterstützt nicht die Sortierstärke (Groß- / Kleinschreibung beachten oder nicht beachten).Es gibt keine Möglichkeit, eine andere Zeitzone als die globale Zeitzone in der Zeitformatierung anzugeben.

Und vieles mehr...

Weiß jemand, ob Änderungen an Standardfacetten in C ++ 0x erwartet werden?Gibt es eine Möglichkeit, eine Bedeutung solcher Änderungen zu bringen?

Vielen Dank.

BEARBEITEN: Erläuterungen für den Fall, dass der Link nicht zugänglich ist:

std::numpunct definiert Tausendertrennzeichen als Zeichen. Wenn also ein Trennzeichen in U + 2002 - eine andere Art von Raum - verwendet wird, kann es in UTF-8 nicht als einzelnes Zeichen, sondern als Folge von mehreren Bytes reproduziert werden.

In C APIstruct lconv Definiert das Tausendertrennzeichen als Zeichenfolge und leidet nicht an diesem Problem. Wenn Sie also versuchen, Zahlen mit Trennzeichen außerhalb von ASCII mit UTF-8-Gebietsschema zu formatieren, wird ungültiges UTF-8 erzeugt.

Um diesen Fehler zu reproduzieren, schreiben Sie 1234 an std: ostream with imbuedru_RU.UTF-8 Gebietsschema

EDIT2: Ich muss zugeben, dass die POSIX C-Lokalisierungs-API viel reibungsloser funktioniert:

Es gibt eine Umkehrung von strftime - strptime (strftime macht dasselbe wiestd::time_put::put)Keine Probleme mit der Zahlenformatierung wegen des oben erwähnten Punktes.

Es ist jedoch immer noch perfekt.

EDIT3: Nach den neuesten Hinweisen zu C ++ 0x kann ich das sehenstd::time_get::get -- ähnlich zustrptime und das Gegenteil vonstd::time_put::put.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage