locale.h
locale.h — заголовочный файл стандартной библиотеки языка программирования С, который используется для задач, связанных с локализацией.
Типы данных
[править | править код]Заголовочный файл объявляет структуру lconv
и её поля, которая хранит информацию о текущей кодировке для форматирования чисел.[1]
Название | Функция | Значение для "C" |
---|---|---|
char *decimal_point | Разделитель десятичных чисел для неденежных величин | "." |
char *thousands_sep | Разделитель тысяч для неденежных величин | "" |
char *grouping | Строка, элементы которой отображают размер каждой группы чисел для форматированных неденежных величин | "" |
char *mon_decimal_point | Разделитель десятичных чисел для денежных величин | "" |
char *mon_thousands_sep | Разделитель тысяч для денежных величин | "" |
char *mon_grouping | Строка, элементы которой отображают размер каждой группы чисел для форматированных денежных величин | "" |
char *positive_sign | Символ, отображающий неотрицательность для денежных величин | "" |
char *negative_sign | Символ, отображающий отрицательность денежных величин | "" |
char *currency_symbol | Знак валюты | "" |
char frac_digits | Число дробных знаков для денежных величин | CHAR_MAX |
char p_cs_precedes | 1 если знак валюты предшествует неотрицательной денежной величине и 0 в противном случае | CHAR_MAX |
char n_cs_precedes | 1 если знак валюты предшествует отрицательной денежной величине и 0 в противном случае | CHAR_MAX |
char p_sep_by_space | Указывает промежуток между символом валюты, знаком и неотрицательной денежной величиной | CHAR_MAX |
char n_sep_by_space | Указывает промежуток между символом валюты, знаком и отрицательной денежной величиной | CHAR_MAX |
char p_sign_posn | Указывает позицию положительного знака для неотрицательных денежных величин | CHAR_MAX |
char n_sign_posn | Указывает позицию отрицательного знака для отрицательных денежных величин | CHAR_MAX |
char *int_curr_symbol | Международный символ валюты | "" |
char int_frac_digits | Количество дробных чисел для денежных величин в международном формате | CHAR_MAX |
char int_p_cs_precedes | 1 если международный валютный символ предшествует неотрицательной денежной величине и 0 наоборот | CHAR_MAX |
char int_n_cs_precedes | то же самое для отрицательных денежных величин в международном формате | CHAR_MAX |
char int_p_sep_by_space | Указывает расстояние между знаком, символом и значением денежной величины в международном формате | CHAR_MAX |
char int_n_sep_by_space | то же самое для отрицательных чисел | CHAR_MAX |
char int_p_sign_posn | Указывает расстояние между положительным знаком и денежной величиной в международном формате | CHAR_MAX |
char int_n_sign_posn | то же самое для отрицательных денежных величин в международном формате | CHAR_MAX |
Макросы
[править | править код]Заголовочный файл определяет следующие макросы-категории:[1]
Название | Затрагивает |
---|---|
LC_ALL | все параметры локализации |
LC_COLLATE | поведение функций strcoll и strxfrm |
LC_CTYPE | поведение всех функций из ctype.h кроме isdigit и isxdigit |
LC_MONETARY | отображение денежных величин |
LC_NUMERIC | отображение десятичных чисел |
LC_TIME | поведение strftime и wcstrftime |
Функции
[править | править код]#include <locale.h> struct lconv *localeconv(void); char *setlocale(int category, const char *locale);
Функция localeconv
получает текущую кодировку.
Функция setlocale
устанавливает новую локализацию для операций, связанных с категорией category
(является одной из предопределённых макросами). Стандарт определяет следующие кодировки:
""
— локализация по умолчанию для данной платформы"C"
— минимальная локализация для окружения языка Си
и иные системно-зависимые.[1]
Если запрос на изменение локализации может быть удовлетворён, функция возвращает текущую локализацию для категории category
. В противном случае возвращается NULL.
При запуске программы используется "C"
локализация.
Пример кода
[править | править код]#include <stdio.h> #include <locale.h> int main(void) { struct lconv* currentlocale; currentlocale = localeconv(); printf("In current locale standard currency symbol is %c\n", *(currentlocale->currency_symbol)); return 0; }
Пример использования функции (setlocale)
#include <stdio.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "RU"); printf("Привет, мир! \n"); return 0; }
Примечания
[править | править код]- ↑ 1 2 3 ISO/IEC 9899:1999 . Дата обращения: 31 июля 2011. Архивировано 22 августа 2011 года.
Ссылки
[править | править код]locale.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)localeconv
— системные интерфейсы, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)setlocale
— системные интерфейсы, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)