Unicode ha diverse codifiche, la più usata è la lunghezza variabile UTF-8 codifica (su byte da 8 bit, ovvero char
sulla maggior parte delle implementazioni C ++). Quindi prendi il carattere n th Unicode (o punto codice ) in una stringa di byte UTF-8 richiede l'iterazione su quella stringa (perché un singolo carattere Unicode può richiedere da 1 a 6 byte). UTF-8 è oggi molto comune (ad esempio utilizzato nella maggior parte dei siti Web). Vedi utfeverywhere.org suggerito da un commento di Erik Eidt . Forse usa una libreria UTF8 (come libunistring per C o utf8cpp per C ++)
wchar_t
potrebbe essere 16 bit -e.g. per UTF-16 - (ma spesso 32 bit e IIRC i 32 bit sono richiesti dall'ultimo C ++ 14 standard, ma potrei sbagliarmi) e wchar_t
potrebbe utilizzare una codifica non Unicode.
AFAIK, un'implementazione potrebbe fornire char
e wchar_t
stringhe senza avere Unicode (almeno per i vecchi standard C ++ fino a C ++ 03).
Nel secolo scorso esistevano molti standard e codifiche di caratteri incompatibili (e incompatibili con Unicode), ad es. EBCDIC sui mainframe, KOI per cirillico, ecc.