A QChar
- это оболочка для 16-битного символа UTF-16.
Вы можете получить значение, используя QChar::unicode()
, которое возвращает unsigned short
.
. Вы можете напишите свой переключатель следующим образом:
QChar c;
switch (c.unicode()) {
case u'a':
...
}
Будьте осторожны с вашими операторами case
, так как если вы используете 8-битные литералы символов, они могут работать не так, как ожидалось.
Например é
может быть 0xE9
(Latin-1, UTF16) или 0x82
(CP437) или даже 0xC3 0xA9
(UTF-8, который не будет компилироваться, так как для него требуется 2 символа).
Решением является использование литералов UTF-16, которые являются частью C ++ начиная с C ++ 11. Например, u'é'
всегда будет компилироваться как char16_t
(~ unsigned short
) со значением 0x00E9
.