Più lavoro con le sfaccettature locali di C++, più capisco --- sono interrotte.Esistono aggiornamenti del supporto per la localizzazione in C++ 0x?
std::time_get
- non è simmetrica constd::time_put
(come in C strftime/strptime) e non consente facili analisi di volte con segni di AM/PM.- I discovered recentemente la semplice formattazione dei numeri può produrre UTF-8 illegale in determinate impostazioni locali (come
ru_RU.UTF-8
). std::ctype
è molto semplicistico supponendo che su superiore/inferiore possa essere eseguito su base per carattere (la conversione del caso può modificare il numero di caratteri ed è dipendente dal contesto).std::collate
- non supporta la forza di fascicolazione (maiuscole o minuscole).- Non c'è modo di specificare il fuso orario diverso dal fuso orario globale nella formattazione dell'ora.
E molto altro ancora ...
- Fa qualcuno sa se tutti i cambiamenti sono attesi nel sfaccettature standard in C++ 0x?
- C'è un modo per dare importanza a tali cambiamenti?
Grazie.
EDIT: chiarimenti caso il collegamento non è accessibile:
std::numpunct
definisce migliaia separatore come char. Quindi, quando separatore in U + 2002 - diverso tipo di spazio non può essere riprodotto come singolo carattere in UTF-8 ma come sequenza di più byte.
In C API struct lconv
definisce il separatore di migliaia come stringa e non soffre di questo problema. Quindi, quando provi a formattare numeri con separatori al di fuori di ASCII con le impostazioni internazionali UTF-8, viene generato UTF-8 non valido.
Per riprodurre il bug scrittura 1234 per std: ostream con imbevuta ru_RU.UTF-8
locale
EDIT2: devo ammettere che POSIX C localizzazione API funziona molto più agevole:
- C'è inverso di strftime - - strptime (strftime fa lo stesso di
std::time_put::put
) - Nessun problema con la formattazione del numero a causa del punto che ho menzionato sopra.
Tuttavia, è ancora per essere perfecet.
Edit3: Secondo le ultime note su C++ 0x posso vedere che std::time_get::get
- simile a strptime
e di fronte di std::time_put::put
.
Sembra che tu abbia la fortuna di ottenere il funzionamento di std :: locale Non ho mai avuto alcun successo con MingW – UncleBens
L'unico link nella tua risposta è rotto e non funziona non aperto (non è sorprendente dato che è '.no-ip.info', immagino, ma dato che è una parte della domanda, potresti volerlo mettere altrove in modo che sia accessibile). –
Mingw non supporta alcuna impostazione locale accetta C/POSIX, tuttavia, sotto linux il supporto della localizzazione è molto buono, l'API della libreria C di BTW è molto più pulita, meglio progettata e in genere funziona molto più agevolmente, ma ... POSIX API consente solo un locale per processo che è piuttosto limitante – Artyom