246
const char *locale);
Пример 13.9. Описание функции setlocale().
Аргумент category задает категорию (LC_COLLATE, LC_CTYPE,
LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME), а если
его значение равно LC_ALL, то и всю среду.
Аргумент locale указывает на цепочку символов, содержащую
требуемые установки для выбранной категории (категорий); в общем
случае ее формат зависит от реализации. Имеется, однако, несколько
предопределенных, стандартизованных цепочек.
"POSIX" или "C"
Специфицирует минимальную языково-культурную среду (POSIX-
среду) для C-программ. При отсутствии явных обращений к функции
setlocale() такая среда устанавливается по умолчанию при входе в main().
""
Специфицирует зависящую от реализации местную языково-
культурную среду, определяемую значениями переменных окружения
LC_* и LANG. Интернационализированная программа должна
выполнять вызов вида
setlocale (LC_ALL, "");
для настройки на местную среду выполнения.
Если значением аргумента locale служит пустой указатель,
функция setlocale() опрашивает текущее окружение и возвращает имя
используемой языково-культурной среды или цепочку символов,
ассоциированную с выбранной категорией. В противном случае в
качестве результата возвращаются те же характеристики, но для новой
среды. Результирующая цепочка (скопированная в отведенную
прикладной программой область памяти) в сочетании с заданной
категорией может быть использована в последующих вызовах функции
setlocale() для восстановления соответствующей части языково-
культурной среды.
Разумеется, в случае неудачного завершения вызова setlocale()
результатом служит пустой указатель.
Получить детальную информацию о категориях LC_MONETARY
и LC_NUMERIC текущей языково-культурной среды можно с помощью
функции localeconv() (см. листинг 13.10
).
#include <locale.h>
struct lconv *localeconv (void);
Пример 13.10. Описание функции localeconv().
Структура типа lconv была описана выше. Здесь мы отметим лишь
два момента.
Поля, имеющие тип char *, указывают на цепочки символов,
каждая из которых (за исключением *decimal_point) может иметь вид ""
как признак того, что данное значение в текущей среде недоступно или
имеет нулевую длину.