GCC supporta -fshort-wchar che passa da wchar_t a 4 byte.Quanto è grande wchar_t con GCC?
Qual è il modo migliore per rilevare la dimensione di wchar_t in fase di compilazione, così posso mapparlo correttamente al tipo utf-16 o utf-32 appropriato? Almeno, fino a quando C++ 0x viene rilasciato e ci fornisce utf16_t e utf_32_t typedefs stabili.
#if ?what_goes_here?
typedef wchar_t Utf32;
typedef unsigned short Utf16;
#else
typedef wchar_t Utf16;
typedef unsigned int Utf32;
#endif
non fare questo. wchar_t non ha nulla a che fare con unicode. È un tipo distinto che può contenere tutti i membri del set di caratteri esteso più grande di tutte le impostazioni locali supportate. Se la tua piattaforma supporta solo ASCII allora sizeof (wchar_t) può essere 1. Ciò significa anche che, ad esempio, L'mötley crüe 'è * non necessariamente * una stringa unicode - potrebbe anche essere una stringa Latin-1 memorizzata con wchar_t. –
Questo è il commento più universalmente inutile di sempre. Sulla base di tale consiglio, non dovremmo mai tentare di trattare una stringa codificata in Utf finché C++ 0x non viene rilasciato universalmente. Nel frattempo, ho bisogno di un set di typedefs, per le piattaforme che supporto, che mappino ai tipi distinti più appropriati in grado di contenere i dati richiesti. –