Ответ 1
Предоставляет ли новая библиотека стандартные методы для преобразования UTF-8 в UTF-16 и т.д.?
Нет. Новая библиотека предоставляет std::codecvt
грани, которые делают преобразование для вас при работе с iostream. ISO/IEC TR 19769: 2004, технический отчет C Unicode, включен почти в стенограмму в новом стандарте.
Предоставляет ли новая библиотека возможность записи UTF-8 в файлы, на консоль (или из файлов, из консоли). Если да, можем ли мы использовать cout или нам нужно что-то еще?
Да, вы просто наполните cout правильной гранью codecvt
. Обратите внимание, однако, что консоль не требуется правильно отображать эти символы.
Входит ли в новую библиотеку "базовые" функциональные возможности, такие как: открытие байта и длина строки UTF-8, преобразование в верхний регистр/нижний регистр (учитывает ли это влияние локалей?)
AFAIK, что функциональность существует с существующим стандартом С++ 03. std::toupper
и std::towupper
, конечно, как и в предыдущих версиях стандарта. Нет никаких новых функций, которые специально работают для unicode для этого.
Если вам нужны такие вещи, вам все равно придется полагаться на внешнюю библиотеку. <iostream>
- это основная часть, которая была модифицирована.
Что, специально, добавлено для unicode в новом стандарте?
- Unicode литералы через u8 ", u" "и U" "
-
std::char_traits
классы для UTF-8, UTF-16 и UTF-32 -
mbrtoc16
,c16rtomb
,mbrtoc32
иc32rtomb
из ISO/IEC TR 19769: 2004 -
std::codecvt
грани для языковой библиотеки - Шаблон класса
std::wstring_convert
(который использует механизмcodecvt
для преобразования кода) -
std::wbuffer_convert
, который делает то же самое, что иwstring_convert
, за исключением необработанных массивов, а не строк.