Unicode-string-Literale

C++11 führt eine Reihe neuer string-literal Prä - (und erlaubt sogar Benutzer-definierten Suffixe). Am Anfang dieser, können Sie direkt verwenden, um Unicode-escape-Sequenzen, um code, der ein bestimmtes symbol, ohne sich sorgen über die Codierung.

const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";

Aber kann ich die unicode-escape-Sequenzen in wchar_t string-literalen? Es scheint ein Mangel, wenn dies nicht möglich war.

const wchar_t* sw = L"\u00DA";

Den integer-Wert von sw[0] würde natürlich davon abhängen, was wchar_t ist auf eine bestimmte Plattform, sondern um alle anderen Effekte, das sollte tragbar sein, nicht?

Ich glaube, dass der Wert von sw[0] hängt davon ab, was wchar_t ist auf einer bestimmten Plattform nur in dem Umfang von der Größe des wchar_t ist. I. e. \u00DA sollte immer dazu führen, dass einige Unicode-Codierung (UTF-8, UTF-16, UTF-32) U+00DA, auch wenn das nicht die Plattform, die normale Codierung, die für diesen Datentyp.
Tatsächlich die oben ist falsch. Die Umsetzung soll zur Behandlung von universal-character-Namen, als wäre es der wörtliche Charakter. Also, wenn die Umsetzung übersetzt Zeichen in einem string-literal an die Ausführung Zeichensatz, dann sollte es so tun, mit UCNs als gut. Sie sind nur gewährleistet, die UTF-Codierung, wenn der UCN in einem unicode-Literale (z.B., u8"\u00DA").

InformationsquelleAutor rubenvb | 2011-10-03

Schreibe einen Kommentar