[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Советы программистам

Исторически сложилось так, что в языке C длина символа (тип character) составляет 1 байт, т.е. слова "символ" (character) и "байт" (byte) - синонимы. Таким образом, размер массива, объявленного как char foo[10], составляет 10 байт. Однако не все языки мира позволяют применять однобайтовый набор символов. Например, в японском и китайском языках для идентификации символа применяется два или более байт. Поэтому мы будем различать понятия "байт" (означающее 8 бит данных) и "символ" (представляющее собой объем информации, необходимый для идентификации одного графического символа).

Локаль характеризуется двумя свойствами - числом байт, необходимым для описания одного символа, и числом позиций экрана, необходимым для вывода одного символа. Эти значения могут быть получены с помощью макроопределений MB_CUR_MAX и MAX_DISP_WIDTH. Если оба значения равны единице, то в текущей локали понятия "байт" и "символ" эквивалентны. Если хотя бы одно из значений больше 1, то программы, выполняющие посимвольную обработку или следящие за выводом на экран, должны применять функции поддержки национальных языков.

Так как многобайтовые кодировки используют переменное число байт для представления символа, они не могут обрабатываться с помощью массивов типа char. Для повышения эффективности работы с символами многобайтовых кодировок был определен тип данных фиксированного размера wchar_t. Размер wchar_t достаточен для размещения преобразованного кода любого символа из поддерживаемых кодировок. Программисты могут объявлять массивы типа wchar_t и работать с ними примерно так же, как и с массивами типа char, используя функции работы с многобайтовыми символами, аналогичные стандартным функциям libc.a.

К сожалению, преобразование символов из многобайтового представления, в котором текст вводится, хранится на диске и выводится на экран, в формат wchar_t требует значительных ресурсов системы. Этот тип следует применять только тогда, когда эффективность работы с массивами wchar_t будет явно компенсировать затраты на преобразование из многобайтового представления в формат wchar_t.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]