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 (является одной из предопределённых макросами). Стандарт определяет следующие кодировки:

  1. "" — локализация по умолчанию для данной платформы
  2. "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. 1 2 3 ISO/IEC 9899:1999. Дата обращения: 31 июля 2011. Архивировано 22 августа 2011 года.