Новый стандарт С++ 11 упоминает заголовок <cuchar>
, предположительно по аналогии с C99 <uchar.h>
.
Теперь мы знаем, что С++ 11 приносит новые типы символов и литералы, которые специально разработаны для UTF16 и UTF32, но я не думал, что язык будет фактически содержат функции для преобразования (зависящего от системы) узкого многобайтового кодирования в одно из кодировок Unicode. Однако я просто столкнулся с синтаксисом заголовка для <cuchar>
, в котором упоминаются функции mbrtoc16
/c16rtombr
и mbrtoc32
/c32rtombr
, которые, похоже, делают именно это.
К сожалению, стандарт ничего не говорит об этих функциях, выходящих за рамки синтаксиса заголовка. Где эти функции определены, что они действительно делают и где я могу больше узнать о них? Означает ли это, что теперь можно использовать правильный Unicode полностью со стандартным С++, не требуя каких-либо дополнительных библиотек?