Функции библиотеки C -localeconv()

Стандартная библиотека C - <locale.h>

Описание

localeconv()является стандартной библиотекой C<locale.h>Одна из функций, используемая для получения информации о числовом и валютном форматировании для текущей локали. Она возвращает указатель наstruct lconvУказатель на структуру, содержащую локализованную информацию о форматировании для текущей локали.

Объявление

Ниже приведено объявление функции localeconv().

#include <locale.h>

struct lconv *localeconv(void);

Параметр

  • Н/Д

Возвращаемое значение

  • Возвращает указатель наstruct lconvУказатель на структуру, содержащую локализованную информацию для текущей локали.

текущая локальstruct lconvСтруктура указателя такова:

struct lconv {
    char *decimal_point;       // 小数点字符
    char *thousands_sep;       // 千位分隔符
    char *grouping;            // 数字分组方式

    char *int_curr_symbol;     // 国际货币符号
    char *currency_symbol;     // 本地货币符号
    char *mon_decimal_point;   // 货币小数点字符
    char *mon_thousands_sep;   // 货币千位分隔符
    char *mon_grouping;        // 货币分组方式
    char *positive_sign;       // 正数符号
    char *negative_sign;       // 负数符号

    char int_frac_digits;      // 国际小数位数
    char frac_digits;          // 本地小数位数
    char p_cs_precedes;        // 正值货币符号前置
    char p_sep_by_space;       // 正值货币符号与值之间的间隔
    char n_cs_precedes;        // 负值货币符号前置
    char n_sep_by_space;       // 负值货币符号与值之间的间隔
    char p_sign_posn;          // 正值符号位置
    char n_sign_posn;          // 负值符号位置
};

Пример

Ниже приведён пример кода, который использует localeconv для получения и вывода информации о числовом и денежном форматировании текущей локали:

Пример

#include <stdio.h>
#include <locale.h>

int main() {
    // Установить информацию о локали в настройки по умолчанию из переменных среды пользователя
    setlocale(LC_ALL, "");

    // Получить информацию о локали для текущей локали
    struct lconv *lc = localeconv();

    // Вывести информацию о числовом форматировании
    printf("Символ десятичной точки: %s\n", lc->decimal_point);
    printf("Разделитель тысяч: %s\n", lc->thousands_sep);
    printf("Группировка: %s\n", lc->grouping);

    // Вывод информации о форматировании валюты
    printf("Международный символ валюты: %s\n", lc->int_curr_symbol);
    printf("Символ местной валюты: %s\n", lc->currency_symbol);
    printf("Символ десятичной точки денежных сумм: %s\n", lc->mon_decimal_point);
    printf("Разделитель тысяч денежных сумм: %s\n", lc->mon_thousands_sep);
    printf("Группировка денежных сумм: %s\n", lc->mon_grouping);
    printf("Положительный знак: %s\n", lc->positive_sign);
    printf("Отрицательный знак: %s\n", lc->negative_sign);
    printf("Международное количество цифр дробной части: %d\n", lc->int_frac_digits);
    printf("Местное количество цифр дробной части: %d\n", lc->frac_digits);
    printf("Символ валюты для положительной суммы предшествует: %d\n", lc->p_cs_precedes);
    printf("Символ валюты для положительных значений отделён пробелом: %d\n", lc->p_sep_by_space);
    printf("Символ валюты для отрицательных значений предшествует: %d\n", lc->n_cs_precedes);
    printf("Символ валюты для отрицательных значений отделён пробелом: %d\n", lc->n_sep_by_space);
    printf("Позиция знака для положительных значений: %d\n", lc->p_sign_posn);
    printf("Позиция знака для отрицательных значений: %d\n", lc->n_sign_posn);

    return 0;
}

Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:

Decimal point character: .
Thousands separator: ,
Grouping: 
International currency symbol: CNY 
Local currency symbol: ¥
Monetary decimal point character: .
Monetary thousands separator: ,
Monetary grouping: 
Positive sign: 
Negative sign: -
International fractional digits: 2
Local fractional digits: 2
Positive currency symbol precedes: 1
Positive currency symbol separated by space: 0
Negative currency symbol precedes: 1
Negative currency symbol separated by space: 0
Positive sign position: 1
Negative sign position: 4

Пояснение кода

  • информация о числовом формате:

    • decimal_point: символ десятичной точки, например "."。
    • thousands_sep: разделитель тысяч, например ","。
    • grouping: группировка чисел.
  • информация о формате валюты:

    • int_curr_symbol: символ международной валюты, например "USD".
    • currency_symbol: символ местной валюты, например "$".
    • mon_decimal_point: Символ десятичной точки для валюты.
    • mon_thousands_sep: Разделитель тысяч для валюты.
    • mon_grouping: Группировка валюты.
    • positive_sign: Положительный знак, например "".
    • negative_sign: Отрицательный знак, например "-".
    • int_frac_digits: Международное количество дробных разрядов.
    • frac_digits: Локальное количество дробных разрядов.
    • p_cs_precedes: Предшествует ли символ валюты положительному значению (1 = предшествует, 0 = следует).
    • p_sep_by_space: Есть ли пробел между символом валюты и положительным значением (1 = да, 0 = нет).
    • n_cs_precedes: Предшествует ли символ валюты отрицательному значению (1 = предшествует, 0 = следует).
    • n_sep_by_space: Есть ли пробел между символом валюты и отрицательным значением (1 = да, 0 = нет).
    • p_sign_posn: Позиция положительного знака (1 = предшествует, 2 = следует, 3 = рядом с числовым значением, 4 = рядом с символом валюты).
    • n_sign_posn: Положение знака минуса (1 = перед, 2 = после, 3 = рядом с числовым значением, 4 = рядом с символом валюты).

Итог

localeconvФункция позволяет программе получить информацию о числовом и валютном форматировании текущей локали. Это очень полезно для написания интернационализированных программ, которым необходимо обрабатывать несколько языков и форматов валют. Используяsetlocaleиlocaleconvфункцию, программисты могут реализовать локализацию программы, тем самым удовлетворяя потребности разных групп пользователей.

Стандартная библиотека C - <locale.h>

Другие расширения