std::lconv

From cppreference.com
< cpp‎ | locale
 
 
Localizations library
Locales and facets
Locales
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
monetary facets
messages facets
Character classification and conversion
Character classification
Conversions
(C++11/17*)
(C++11/17*)
Code conversion facets
(C++11/17*)
(C++11/17*)    
(C++11/17*)
C locale
 
Defined in header <clocale>
struct lconv;

The class std::lconv contains numeric and monetary formatting rules as defined by a C locale. Objects of this struct may be obtained with std::localeconv. The members of std::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
(C++11)
1 if int_curr_symbol is placed before non-negative international monetary value, 0 if after
(public member object)
char int_n_cs_precedes
(C++11)
1 if int_curr_symboll is placed before negative international monetary value, 0 if after
(public member object)
char int_p_sep_by_space
(C++11)
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
(C++11)
indicates the separation of int_curr_symbol, negative_sign, and the negative international monetary value
(public member object)
char int_p_sign_posn
(C++11)
indicates the position of positive_sign in a non-negative international monetary value
(public member object)
char int_n_sign_posn
(C++11)
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 <clocale>
#include <iostream>
 
int main()
{
    std::setlocale(LC_ALL, "ja_JP.UTF-8");
    std::lconv* lc = std::localeconv();
    std::cout << "Japanese currency symbol: " << lc->currency_symbol
              << '(' << lc->int_curr_symbol << ")\n";
}

Output:

Japanese currency symbol: ¥(JPY )

See also

queries numeric and monetary formatting details of the current locale
(function)
defines numeric punctuation rules
(class template)
defines monetary formatting parameters used by std::money_get and std::money_put
(class template)