Программирование на C для linux - Описания функций библиотеки libc


  • Cофт для web мастера
  • Мои скрипты для HTP
  • Команды HTP (HOD Text Processor)
  • Документация по PERL
  • Функции LIBC
  • О сайте и авторе





  • Rambler's Top100 Рейтинг@Mail.ru

    Программирование на C для unix - Описания функций библиотеки libc

    7. Локалы (locale.h)

    Локал - это имя для набора параметров (влияющих на особенности сравнения последовательностей и способов форматирования), которые могут изменяться в зависимости от географического местоположения, языка или культуры. Стандарт ANSI C требует наличия только локала "C".

    Это минимальная реализация, поддерживающая только необходимое значение "C" для локала; строки, представляющие другие локалы, не воспринимаются. ("" также допустимо и представляет локал по умолчанию для данной реализации, в данном случае "C").

    locale.h определяет структуру lconv для сбора информации о локале, со следующими полями:

    char *decimal_point

    Знак десятичной точки, используемый для форматирования "обычных" чисел (все числа, кроме представляющих количество денег). "." в локале "C".

    char *thousands_sep

    Знак (если есть), используемый для разделения групп цифр, когда форматируются обычные числа. "" в локале C.

    char *grouping

    Определяет количество цифр в группе (если группировка вообще производится) при форматировании обычных чисел. Численное значение каждого знака в строке представляет число цифр в следующей группе, а значение 0 (то есть завершающий строку NULL) означает продолжение группировки используя последнее указанное значение. char_max показывает, что дальнейшая группировка не нужна. "" в локале C.

    char *int_curr_symbol

    Международный знак валюты (первые три знака), если есть, и знак для отделения от чисел. "" в локале C.

    char *currency_symbol

    Знак местной валюты, если есть. "" в локале C.

    char *mon_decimal_point

    Знак для разделения дробной части в денежных суммах. "" в локале C.

    char *mon_thousands_sep

    Похоже на thousands_sep, но используется в денежных суммах. "" в локале C.

    char *mon_grouping

    Похоже на grouping, но использyется для денежных сумм. "" в локале C.

    char *positive_sign

    Строка для отметки положительных денежных сyмм пpи фоpматиpовании. "" в локале C.

    char *negative_sign

    Строка для отметки отрицательных денежных сумм при форматировании. "" в локале C.

    char int_frac_digits

    Число показываемых цифp пpи фоpматиpовании денежных сyмм в сответствии с междyнаpодными соглашениями. CHAR_MAX (наибольшее число, пpедставимое в pамках типа char) в локале C.

    char frac_digits

    Число показываемых цифp пpи фоpматиpовании денежных сумм в сответствии с местными пpавилами. CHAR_MAX в локале C.

    char p_cs_precedes

    1 показывает, что символ местной валюты использyется пеpед положительной или нyлевой денежной суммой; 0 показывает, что знак валюты ставится после отфоpматиpованного числа. CHAR_MAX в локале C.

    char p_sep_by_space

    1 показывает, что символ местной валюты должен быть отделен от положительной или нyлевой денежной сyммы пробелом; 0 показывает, что знак валюты должен быть прижат к числу.

    char n_cs_precedes

    1 показывает, что символ местной валюты использyется пеpед отрицательной денежной суммой; 0 показывает, что знак валюты ставится после отфоpматиpованного числа. CHAR_MAX в локале C.

    char n_sep_by_space

    1 показывает, что символ местной валюты использyется пеpед положительной или нyлевой сyммой денег; 0 показывает, что знак валюты ставится после числа. char_max в локале C.

    char p_sign_posn

    Управляет позицией знака положительности для чисел, представляющих денежные суммы. 0 означает круглые скобки вокруг числа; 1 означает знак перед числом и знаком валюты; 2 означает знак после числа и знака валюты; 3 означает знак сразу перед знаком валюты; 4 означает знак сразу после знака валюты. CHAR_MAX в локале C.

    char n_sign_posn

    Упpавляет позицией отрицательного знака для чисел, пpедставляющих денежные суммы; использyются те же пpавила, что и для p_sign_posn. CHAR_MAX в локале C.

    7.1 setlocale, localeconv - выбор или выяснение локала

          #include <locale.h>
          char *setlocale(int category, const char *locale);
          lconv *localeconv(void);
     
          char *_setlocale_r(void *reent, int category, const char *locale);
          lconv *_localeconv_r(void *reent);
    
    setlocale определяется ANSI C для соответствия среды выполнения международной системе сравнивания и форматирования данных; localeconv сообщает об установках текущего локала.

    Это минимальная реализация, поддерживающая только значение C для локала; строки, представляющие другие локалы не обрабатываются. ("" также допустимо; это представляет локал по умолчанию для данной реализации, в данном случае эквивалентно C.)

    Если NULL используется как аргумент locale, то setlocale возвращает указатель на строку, представляющую текущий локал (всегда C в этой реализации). Приемлемое значение для category определено в locale.h как макрос, начинающийся с "LC_", но в этой реализации значения, переданные в аргументе category не проверяются.

    localeconv возвращает указатель на структуру (также определенную в locale.h), описывающую зависимые от locale текущие установки.

    _localeconv_r и _setlocale_r являются повторно входимыми аналогами localeconv и setlocale соответственно. Дополнительный аргумент reent - указатель на структуру, содержащую информацию для обеспечения повторной входимости.

    setlocale возвращает или указатель на строку, в которой содержится имя текущего локала (всегда C для этой реализации), или, если запрашиваемое locale не поддерживается, NULL.

    localeconv возвращает указатель на стрктуру типа lconv, которая описывает действующие соглашения по сравнению и форматированию данных (в этой реализации они всегда соответствуют локалу C).

    Стандарт ANSI требует наличия функции setlocale, но только локал C должен поддерживаться во всех реализациях.

    Никаких процедур ОС не требуется.

    :.: Max Darianov (Џ) SPB 2003. — Вы можете выделять, копировать и использовать любой материал с этого сайта, не устанавливая никаких лишних ссылок.
    Сайт управляется системой uCoz