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

Программирование: Разработка и отладка программ


Функции для поддержки национальных языков - Обзор

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

Обзор функций для работы с локалями

Программы, которые выполняют обработку данных с учетом текущей локали, включая вывод сообщений, должны вызывать функцию setlocale

перед началом работы. Этот вызов должен быть первым исполняемым оператором функции main. Программы, которые не вызывают setlocale, по умолчанию наследуют локаль C или локаль POSIX. Такие программы не учитывают значения переменных среды LC_* и LANG.

Для определения формата представления данных в текущей локали предусмотрен специальный набор функций. Описание этих функций приведено в разделе Функции работы с локалями.

Обзор функций форматирования даты и времени

Для преобразования даты и времени в строку широких символов в программе может применяться функция wcsftime. Для преобразования строк многобайтовых символов во внутренний формат времени применяется функция strptime. Описание этих функций приведено в разделе Функции формата даты и времени.

Обзор функций форматирования денежных сумм

Для работы с денежными величинами в программах может применяться функция strfmon. Ее описание приведено в разделе Функции форматирования денежных сумм.

Обзор функций обработки многобайтовых и широких символов

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

Средства NLS для создания международных программ представляют собой набор функций для работы с многобайтовыми и широкими символами. Функции для работы с многобайтовыми символами поддерживают многобайтовые наборы символов. Функции для работы с широкими символами применяют набор широких символов. Первый тип функций имеет префикс mb. Второй тип - префикс wc. Соответствующие функции по обработке строк имеют префиксы mbs и wcs, соответственно. Решение об использовании многобайтовых или широких символов должно приниматься после тщательного анализа.

Если программа в основном применяет функции для работы с многобайтовыми символами, то для вызова некоторых функций для работы с широкими символами может потребоваться преобразование к широкому формату. Если применяются широкие символы, для вызова функций с поддержкой многобайтовых символов может также потребоваться преобразование. Оба способа обладают определенными недостатками, которые могут проявляться в зависимости от программы и от доступности стандартных функций обработки данных. Например, для функции установки ширины столбца вывода широких символов отсутствует аналогичная функция с поддержкой многобайтовых символов.

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

Дополнительная информация о функциях преобразования из многобайтового в широкий формат символов и наоборот приведена в разделе Функции преобразования кода многобайтовых и широких символов.

Файл заголовка wchar.h

В файле заголовка wchar.h объявляются все функции и структуры данных, необходимые для работы с многобайтовыми и широкими символами. В файле wchar.h определены типы данных wchar_t, wctype_t и wint_t

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

В wchar.h также объявляются функции для работы со строками широких символов (т.е. с массивами типа wchar_t ). Длина массива всегда определяется как число элементов типа wchar_t. Массив завершается кодом символа NULL в широком формате. Указатель на массив типа wchar_t или void всегда указывает на его первый элемент.

Примечание: переполнение массива wchar_t может привести к непредвиденным результатам.

Обзор международных функций для работы с регулярными выражениями

Для работы с регулярными выражениями в международных программах могут применяться функции regcomp, regexec, regerror, regfree и fnmatch. Описание этих функций приведено в разделе Функции работы с регулярными выражениями на разных языках.


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