Ich schreibe einige String-Konvertierungsfunktionen ähnlich atoi()
oder strtoll()
. Ich wollte eine Version meiner Funktion hinzufügen, die char16_t * oder char32_t * anstatt nur char * oder wchar_t * akzeptiert.C11 Unicode-Unterstützung
Meine Funktion funktioniert gut, aber als ich es schrieb, erkannte ich, dass ich nicht verstehe, was char16_t oder char32_t sind. Ich weiß, dass der Standard nur erfordert, dass sie ein Integer-Typ von jeweils mindestens 16 oder 32 Bits sind, aber die Implikation ist, dass sie UTF-16 oder UTF-32 sind.
Ich weiß auch, dass der Standard ein paar Funktionen definiert, aber sie enthalten keine * get oder * Put-Funktionen (wie sie taten, wenn sie in wchar.h
in C99 hinzugefügt).
Also frage ich mich: Was erwarten sie von mir mit char16_t und char32_t?
In UTF-8 konvertieren, was sonst? – Deduplicator
@Deduplicator: Wenn das ist, was sie erwartet haben, dass Sie mit ihnen tun, würden Sie denken, dass sie Ihnen Funktionen gegeben hätten, um das zu tun ... –
Planen Sie, nicht nur '0.9' (U + 0030 .. U + 0039) (und möglicherweise 'A..Z/a..z', für die bis zu der höchsten üblichen Stufe, Basis-36), aber alle anderen Zeichen, die in der vollständigen Unicode-Tabelle ebenfalls mit" Numerisch "gekennzeichnet sind? "Dazu gehören typografische Formen (Super- und Indices; eingekreiste Zahlen bis zu 20 (!)) Und skriptspezifische Formen (arabische Zahlen, hebräische Zahlen) sowie römische Zahlen, Altgriechisch und" Zählstäbe "und vieles mehr. – usr2564301