История изменений
Исправление
dzidzitop,
(текущая версия)
:
(char32_t) 0x0436 - означает «ж».
(wchar_t) 0x0436 - не означает вообще ничего (т.е. что угодно, в зависимости от системы, компилятора).
Каким образом можно обрабатывать строки char32_t? Берёшь кодпойнт и с помощью документации для юникод обрабатываешь кодпойнты как тебе нужно.
Каким образом можно обрабатывать строки wchar_t? Я вижу только wprintf & wscanf. А если хочется понимать, содержит ли строка букву «ж», то нужно знать кодировку, а для wchar_t кодировка и кодовая таблица не определены.
Так разница понятна?
=====
Но вроде бы через две конверсии (приводил выше) можно получить из wchar_t нормальный юникод и уже работать с осмысленными кодпойнтами через типы char16_t и char32_t. А чтобы напечатать строку char32_t *, нужно тоже делать две конверсии, чтобы получить wchar_t * и напечатать её через wprintf. Гланды через жопу - всё в лучших традициях C.
Исходная версия
dzidzitop,
:
(char32_t) 0x0436 - означает «ж».
(wchar_t) 0x0436 - не означает вообще ничего (т.е. что угодно, в зависимости от системы, компилятора).
Какмим образом можно обрабатывать строки char32_t? Берёшь кодпойнт и с помощью документации для юникод обрабатываешь кодпойнты как тебе нужно.
Каким образом можно обрабатывать строки wchar_t? Я вижу только wprintf & wscanf. А если хочется понимать, содержит ли строка букву «ж», то нужно знать кодировку, а для wchar_t кодировка и кодовая таблица не определены.
Так разница понятна?
=====
Но вроде бы через две конверсии (приводил выше) можно получить из wchar_t нормальный юникод и уже работать с осмысленными кодпойнтами через типы char16_t и char32_t. А чтобы напечатать строку char32_t *, нужно тоже делать две конверсии, чтобы получить wchar_t * и напечатать её через wprintf. Гланды через жопу - всё в лучших традициях C.