lconv

From Get docs
< Localization supportC/docs/latest/locale/lconv


lconv

Defined in header <locale.h>
struct lconv;

The struct lconv contains numeric and monetary formatting rules as defined by a C locale. Objects of this struct may be obtained with localeconv. The members of lconv are values of type char and of type char*. Each char* member except decimal_point may be pointing at a null character (that is, at an empty C-string). The members of type char are all non-negative numbers, any of which may be CHAR_MAX if the corresponding value is not available in the current C locale.

Member objects

Non-monetary numeric formatting parameters

char* decimal_point

the character used as the decimal point

(public member object)

char* thousands_sep

the character used to separate groups of digits before the decimal point

(public member object)

char* grouping

a string whose elements indicate the sizes of digit groups

(public member object)

Monetary numeric formatting parameters

char* mon_decimal_point

the character used as the decimal point

(public member object)

char* mon_thousands_sep

the character used to separate groups of digits before the decimal point

(public member object)

char* mon_grouping

a string whose elements indicate the sizes of digit groups

(public member object)

char* positive_sign

a string used to indicate non-negative monetary quantity

(public member object)

char* negative_sign

a string used to indicate negative monetary quantity

(public member object)

Local monetary numeric formatting parameters

char* currency_symbol

the symbol used for currency in the current C locale

(public member object)

char frac_digits

the number of digits after the decimal point to display in a monetary quantity

(public member object)

char p_cs_precedes

1 if currency_symbol is placed before non-negative value, ​0​ if after

(public member object)

char n_cs_precedes

1 if currency_symbol is placed before negative value, ​0​ if after

(public member object)

char p_sep_by_space

indicates the separation of currency_symbol, positive_sign, and the non-negative monetary value

(public member object)

char n_sep_by_space

indicates the separation of currency_symbol, negative_sign, and the negative monetary value

(public member object)

char p_sign_posn

indicates the position of positive_sign in a non-negative monetary value

(public member object)

char n_sign_posn

indicates the position of negative_sign in a negative monetary value

(public member object)

International monetary numeric formatting parameters

char* int_curr_symbol

the string used as international currency name in the current C locale

(public member object)

char int_frac_digits

the number of digits after the decimal point to display in an international monetary quantity

(public member object)

char int_p_cs_precedes

(C99)

1 if int_curr_symbol is placed before non-negative international monetary value, ​0​ if after

(public member object)

char int_n_cs_precedes

(C99)

1 if int_curr_symbol is placed before negative international monetary value, ​0​ if after

(public member object)

char int_p_sep_by_space

(C99)

indicates the separation of int_curr_symbol, positive_sign, and the non-negative international monetary value

(public member object)

char int_n_sep_by_space

(C99)

indicates the separation of int_curr_symbol, negative_sign, and the negative international monetary value

(public member object)

char int_p_sign_posn

(C99)

indicates the position of positive_sign in a non-negative international monetary value

(public member object)

char int_n_sign_posn

(C99)

indicates the position of negative_sign in a negative international monetary value

(public member object)


The characters of the C-strings pointed to by grouping and mon_grouping are interpreted according to their numeric values. When the terminating '\0' is encountered, the last value seen is assumed to repeat for the remainder of digits. If CHAR_MAX is encountered, no further digits are grouped. the typical grouping of three digits at a time is "\003".

The values of p_sep_by_space, n_sep_by_space, int_p_sep_by_space, int_n_sep_by_space are interpreted as follows:

0 no space separates the currency symbol and the value
1 sign sticks to the currency symbol, value is separated by a space
2 sign sticks to the value. Currency symbol is separated by a space

The values of p_sign_posn, n_sign_posn, int_p_sign_posn, int_n_sign_posn are interpreted as follows:

0 parentheses around the value and the currency symbol are used to represent the sign
1 sign before the value and the currency symbol
2 sign after the value and the currency symbol
3 sign before the currency symbol
4 sign after the currency symbol

Example

#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);
}

Possible output:

Japanese currency symbol: ¥(JPY )

References

C11 standard (ISO/IEC 9899:2011):

  • 7.11/2 Localization (p: 223)

C99 standard (ISO/IEC 9899:1999):

  • 7.11/2 Localization (p: 204)

C89/C90 standard (ISO/IEC 9899:1990):

  • 4.4 LOCALIZATION

See also

queries numeric and monetary formatting details of the current locale

(function)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/locale/lconv