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 (англ.)