Функции библиотеки 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 <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функцию, программисты могут реализовать локализацию программы, тем самым удовлетворяя потребности разных групп пользователей.