Предоставляет ли новая библиотека стандартные методы для преобразования UTF-8 в UTF-16 и т. Д .?
Нет. Новая библиотека предоставляет std::codecvt
фасетов, которые выполняют преобразование для вас при работе с iostream. Технический отчет по Unicode C ISO / IEC TR 19769: 2004 почти дословно включен в новый стандарт.
Позволяет ли новая библиотека записывать UTF-8 в файлы, на консоль (или из файлов, с консоли). Если да, можем ли мы использовать cout или нам нужно что-то еще?
Да, вы бы просто наполнили cout правильным codecvt
фасетом. Обратите внимание, что консоль не обязана правильно отображать эти символы
Включает ли новая библиотека «базовые» функции, такие как: обнаружение количества байтов и длины строки UTF-8, преобразование в верхний / нижний регистр (учитывает ли это влияние локалей?)
AFAIK, что функциональность существует с существующим стандартом C ++ 03. std::toupper
и std::towupper
, конечно, функционируют так же, как и в предыдущих версиях стандарта. Для этого нет никаких новых функций, которые специально работают с юникодом.
Если вам нужны такие вещи, вам все равно придется полагаться на внешнюю библиотеку - <iostream>
- это основная часть, которая была модифицирована.
Что, конкретно , добавлено для юникода в новом стандарте?
- Литералы 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
, за исключением необработанных массивов, а не строк.