Sto scrivendo alcune funzioni di conversione stringa simili a atoi()
o strtoll()
. Volevo includere una versione della mia funzione che accetti un char16_t * o char32_t * invece di un solo char * o wchar_t *.Supporto Unicode C11
La mia funzione funziona correttamente, ma mentre stavo scrivendo mi sono reso conto che non capisco cosa siano char16_t o char32_t. So che lo standard richiede solo che siano un tipo intero di almeno 16 o 32 bit, ma l'implicazione è che sono UTF-16 o UTF-32.
So anche che lo standard definisce un paio di funzioni ma non include alcuna funzione * get o * put (come hanno fatto quando sono state aggiunte in wchar.h
in C99).
Quindi mi chiedo: cosa si aspettano che faccia con char16_t e char32_t?
Convertire in UTF-8, cos'altro? – Deduplicator
@Deduplicator: Se è quello che si aspettavano che tu facessi con loro, penseresti che ti avrebbero dato le funzioni per farlo ... –
Hai intenzione di supportare non solo '0..9' (U + 0030 .. U + 0039) (e potenzialmente 'A..Z/a..z', fino al livello più alto consueto, base-36) ma tutti gli altri caratteri contrassegnati come" Numerici "nella tabella Unicode completa pure? "Coz include moduli tipografici (super e pedici, numeri cerchiati fino a 20 (!)) E moduli specifici per lo script (numeri arabi, numeri ebraici), oltre a numeri romani, greco antico e" aste di conteggio "e molto altro ancora. – usr2564301