Справочник по C/C++
Функции обработки двухбайтовых символов

В 1995 году к стандарту С89 был добавлен ряд функций, предназначенных для обработки двухбайтовых символов (wide-character functions), которые позже вошли в стандарт С99 и язык C++. Эти функции работают с символами типа wchar_t, которые занимают 16 бит. В основном, они аналогичны своим char-эквивалентам. Например, функция iswspace() является двухбайтовой версией функции isspace(). В целом, функции обработки двухбайтовых символов используют те же имена, что и их char-эквиваленты, но добавляется буква "w" (wide-character, т.е. "широкоформатный" символ).

В языке С функции широкоформатных символов используют заголовки и , а в языке C++ - заголовки и . В этой главе будут использованы имена С-заголовков, но ссылки на и применимы также к заголовкам и соответственно.

Заголовок определяет типы wint_t, wctrans_t и wctype_t. Многие функции двухбайтовых символов принимают в качестве параметра символ широкого формата. Этот параметр имеет тип wint_t, который позволяет содержать символ такого увеличенного формата. Использование типа wint_t в функциях двухбайтовых символов, аналогично использованию типа int в char-ориентированных функциях. Типы wctrans_t и wctype_t - это типы объектов, используемые для преобразования символов и определения категории символа соответственно. Кроме того, в заголовке определен двухбайтовый признак конца файла (EOF) под именем WEOF.

Помимо win_t, в заголовке определены такие типы, как wchar_t, size_t и mbstate_t. Тип wchar_t создает объект двухбайтового символа, a size_t - это тип значения, возвращаемого оператором sizeof. Тип mbstate_t описывает объект, который хранит состояние преобразования многобайтового объекта в символ широкого формата. Заголовок также определяет макросы NULL, WEOF, WCHAR_MAX и WCHAR_MIN. Последние два макроса определяют максимальное и минимальное значения, которые могут храниться в объекте типа wchar_t.

Поскольку большинство функций двухбайтовых символов аналогичны своим char-эквивалентам, в этой главе приводится лишь краткое их описание.


Смотрите также