Пространства имён
Варианты
Действия

lconv

Материал из cppreference.com
< c | locale
<tbody> </tbody>
Определено в заголовочном файле <locale.h>
struct lconv;

Структура lconv содержит правила форматирования числовых и денежных единиц, определяемые локалью C. Объекты этой структуры могут быть получены с помощью localeconv. Члены lconv это значения типа char и типа char*. Каждый член типа char*, кроме decimal_point, может указывать на нуль-символ (то есть пустую C-строку). Члены типа char это неотрицательные числа, любой из которых может быть равен CHAR_MAX, если соответствующее значение не доступно в текущей локали 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
символ, используемый для обозначения валюты в текущей локали C
(публичный объект-член)
char frac_digits
количество цифр после разделителя целой и дробной частей для отображения в денежных единицах
(публичный объект-член)
char p_cs_precedes
1 если символ валюты помещается перед неотрицательным значением, 0 если после
(публичный объект-член)
char n_cs_precedes
1 если символ валюты помещается перед отрицательным значением, 0 если после
(публичный объект-член)
char p_sep_by_space
обозначает разделение currency_symbol, positive_sign и неотрицательного денежного значения
(публичный объект-член)
char n_sep_by_space
обозначает разделение currency_symbol, negative_sign и неотрицательного денежного значения
(публичный объект-член)
char p_sign_posn
обозначает позицию positive_sign в неотрицательном денежном значении
(публичный объект-член)
char n_sign_posn
обозначает позицию negative_sign в отрицательном денежном значении
(публичный объект-член)

Параметры форматирования международных денежных числовых единиц

char* int_curr_symbol
строка, используемая в качестве международного названия валют в текущей локали C
(публичный объект-член)
char int_frac_digits
количество цифр после разделителя целой и дробной частей для отображения в международных денежных единицах
(публичный объект-член)
char int_p_cs_precedes
(C99)
1 если int_curr_symbol помещается перед неотрицательным международным денежным значением, 0 если после
(публичный объект-член)
char int_n_cs_precedes
(C99)
1 если int_curr_symbol помещается перед отрицательным международным денежным значением, 0 если после
(публичный объект-член)
char int_p_sep_by_space
(C99)
обозначает разделение int_curr_symbol, positive_sign и неотрицательного международного денежного значения
(публичный объект-член)
char int_n_sep_by_space
(C99)
обозначает разделение int_curr_symbol, negative_sign и отрицательного международного денежного значения
(публичный объект-член)
char int_p_sign_posn
(C99)
обозначает позицию positive_sign в неотрицательном международном денежном значении
(публичный объект-член)
char int_n_sign_posn
(C99)
обозначает позицию negative_sign в отрицательном международном денежном значении
(публичный объект-член)


Символы в C-строках, на которые указывают grouping и mon_grouping интерпретируются согласно их числовых значений are interpreted according to their numeric values. Когда встречается завершающий '\0', подразумевается, что последнее увиденное значение повторяется в оставшихся цифрах. Если встречается CHAR_MAX, никакие дальнейшие цифры не группируются. Типичная группировка трёх цифр за раз это "\003".

Значения p_sep_by_space, n_sep_by_space, int_p_sep_by_space, int_n_sep_by_space интерпретируются следующим образом:

0 пробелы не разделяют символ валюты и значение
1 знак присоединяется к символу валюты, значение отделяется пробелом
2 знак присоединяется к значению. Символ валюты отделяется пробелом

Значения p_sign_posn, n_sign_posn, int_p_sign_posn, int_n_sign_posn интерпретируются следующим образом:

0 используются скобки вокруг значения и символа валюты для представления знака
1 знак перед значением и символом валюты
2 знак после значения и символа валюты
3 знак перед символом валюты
4 знак после символа

Пример

#include <locale.h>
#include <stdio.h>
 
int main(void)
{
    setlocale(LC_ALL, "ja_JP.UTF-8");
    struct lconv *lc = localeconv();
    printf("Japanese currency symbol: %s(%s)\n", lc->currency_symbol, lc->int_curr_symbol);
}

Возможный вывод:

Japanese currency symbol: ¥(JPY )

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.11/2 Локализация <locale.h> (стр. 223)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.11/2 Локализация <locale.h> (стр. 204)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.4 ЛОКАЛИЗАЦИЯ <locale.h>

См. также

запрашивает числовой и денежный форматы текущей локали
(функция) [править]