Преобразование многобайтового представления символов в представление в
виде широких символов (и наоборот) происходит с помощью состояния
преобразования типа mbstate_t. Преобразование строк происходит с
помощью функций конечной обработки; если они закончили полное
преобразование некоторого количества символов, то, возможно, в
дальнейшем потребуется сохранить этот статус для преобразования
остальных символов. Такой статус преобразований необходим, к примеру,
для кодировок ISO-2022 и UTF-7.
Начальное состояние является состоянием в начале преобразования строки.
Есть два типа состояния: одни используется функциями преобразования
многобайтовых строк в широкие символы, такими, как mbsrtowcs,
а другие используются функциями преобразования широких символов
в многобайтовые строки, такими, как wcsrtombs;
но все они вмещаются в mbstate_t и имеют одинаковое
представление в начальном состоянии.
Все состояния 8-битных кодировок соответствуют начальному состоянию.
Для многобайтовых кодировок - UTF-8, EUC-*, BIG5 или SJIS, функция преобразования
из широкого символа в многобайтовую последовательность никогда не выводит
неисходные состояния, но функция преобразования (напр. mbrtowc)
многобайтовой последовательности в широкий символ выводит
неисходные состояния, когда прерывается в середине символа.
Одним из способов создания mbstate_t в его начальном состоянии
будет установка его нулевого значения: