[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Многобайтовые символы

Многобайтовые символы используются для представления символов в
расширенных наборах. Это необходимо для локалей, в которых 8 бит
недостаточно для представления всех используемых символов. Эти функции
трансформируют многобайтовые символы в широкие и обратно. Широкий
символ имеет тип wchar_t. Многобайтовый символ - это внешнее
представление широкого символа. Многобайтовое представление одного
символа wchar_t может занимать несколько байт и представляется как
массив символов.
Для использования этих функций, необходимо установить категорию локали
LC_TYPE. mbtowc(3C) анализирует не больше n байт, начиная с адреса s,
и проверяет, являются ли эти байты допустимым многобайтовым символом.
Если s равен NULL, mbtowc(3C) возвращает 0. Если s ненулевой, но
символы не образуют допустимого многобайтового символа, mbtowc(3C)
возвращает -1. Если s ненулевой, и символы образуют допустимый
многобайтовый символ, mbtowc(3C) возвращает количество байтов, которые
занимает этот символ. Кроме того, если pwc ненулевой, эти байты
преобразуются в широкий символ и помещаются по адресу pwc.
mblen(3C), описываемая на странице руководства mbchar(3C), возвращает
количество байт, занимаемых многобайтовым символом, на который
указывает s. Она эквивалентна:
mbtowc((wchar_t *)0, s, n);
wctomb(3C) определяет количество байтов, необходимое для представления
многобайтового символа, соответствующего коду широкого символа wchar
и, если s не равен NULL, запоминает многобайтовое представление в
массиве, на который указывает s. Если s равен NULL, wctomb(3C)
возвращает 0. Если s ненулевой, а значение wchar не является
допустимым широким символом, wctomb(3C) возвращает -1. Иначе она
возвращает число байтов, занятых многобайтовым символом,
соответствующим значению wchar.
mbtowcs(3C) преобразует последовательность многобайтовых символов из
массива s в последовательность соответствующих кодов широких символов
и сохраняет эти коды в массиве по адресу pwcs. mbstowcs(3C)
завершается после записи n кодов или после пересылки нулевого кода.
Если обнаружен неправильный многобайтовый символ, mbstowcs(3C)
возвращает -1. Иначе она возвращает количество модифицированных
элементов массива, не считая завершающий нулевой символ, если он был.
wcstombs(3C) преобразует последовательность кодов широких символов из
массива pwcs в последовательность многобайтовых символов, и сохраняет
эти многобайтовые символы в массиве s. wcstombs(3C) останавливается,
когда очередной записываемый многобайтовый символ переходит за n-ый
байт массива или когда передан нулевой символ. Если был обнаружен код
широкого символа, который не соответствует никакому многобайтовому
символу, wcstombs(3C) возвращает -1. Иначе, он возвращает количество
модифицированных байт, не считая завершающего NULL, если он был.
                        МНОГОБАЙТОВЫЕ ФУНКЦИИ
mbchar(3C)

ИМЯ

      mbtowc, wctomb - обработка многобайтовых символов

ИСПОЛЬЗОВАНИЕ

      #include <stdlib.h>

      int mbtowc (wchar_t *pwc, const char *s, size_t n);
      int wctomb (char *s, wchar_t wchar);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - 0 или количество байтов в многобайтовом символе

      неуспех - -1


mbstring(3C)

ИМЯ

      mbstowcs, wcstombs - многобайтовые строковые функции

ИСПОЛЬЗОВАНИЕ

      #include <stdlib.h>

      size_t mbstowcs (wchat_t *pwcs, const char *s, size_t n);
      size_t wcstombs (char *s, const wchar_t *pwcs, size_t n);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех mbstowcs - количество модифицированных элементов массива

            wcstombs - количество модифицированных байт

      неуспех - -1