Czy są jakieś aktualizacje obsługi lokalizacji w C ++ 0x?

Im więcej pracuję z aspektami ustawień regionalnych C ++, tym lepiej rozumiem --- są one zepsute.

std::time_get - nie jest symetryczny zstd::time_put (jak w C strftime / strptime) i nie pozwala na łatwe analizowanie czasów za pomocą znaków AM / PM.I odkryty ostatnio, że proste formatowanie liczb może powodować niedozwolone UTF-8 w pewnych lokalizacjach (npru_RU.UTF-8).std::ctype jest bardzo uproszczone zakładając, że do góry / do dołu można wykonać na podstawie na znak (konwersja przypadku może zmienić liczbę znaków i jest zależna od kontekstu).std::collate - nie obsługuje siły sortowania (wielkość liter lub wielkość liter są niewrażliwe).Nie ma możliwości określenia strefy czasowej innej niż globalna strefa czasowa w formatowaniu czasu.

I wiele więcej...

Czy ktoś wie, czy oczekuje się zmian w standardowych aspektach w C ++ 0x?Czy jest jakiś sposób, aby nadać znaczenie takim zmianom?

Dzięki.

EDYTOWAĆ: Wyjaśnienia w przypadku, gdy link nie jest dostępny:

std::numpunct definiuje separator tysięcy jako znak. Więc kiedy separator w U + 2002 - inny rodzaj przestrzeni, nie może być odtworzony jako pojedynczy znak w UTF-8, ale jako sekwencja wielu bajtów.

W C APIstruct lconv definiuje separator tysięcy jako ciąg znaków i nie cierpi na ten problem. Tak więc, gdy próbujesz sformatować liczby z separatorami poza ASCII z ustawieniami UTF-8, powstaje niepoprawny UTF-8.

Aby odtworzyć ten błąd, napisz 1234 do std: ostream z nasyconymru_RU.UTF-8 widownia

EDIT2: Muszę przyznać, że API lokalizacji POSIX C działa znacznie płynniej:

Istnieje odwrotność strftime - strptime (strftime robi to samo costd::time_put::put)Brak problemów z formatowaniem numerów z powodu wspomnianego powyżej punktu.

Jednak nadal nie można być perfecetem.

EDIT3: Według najnowszych notatek na temat C ++ 0x widzę tostd::time_get::get -- podobny dostrptime i naprzeciwkostd::time_put::put.

questionAnswers(2)

yourAnswerToTheQuestion