LINUX.ORG.RU

История изменений

Исправление 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.