#include <locale.h>
|
|
struct lconv *
localeconv (void); |
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;
char int_p_cs_precedes;
char int_n_cs_precedes;
char int_p_sep_by_space;
char int_n_sep_by_space;
char int_p_sign_posn;
char int_n_sign_posn;
};
The individual fields have the following meanings:
| decimal_point | The decimal point character, except for currency values, cannot be an empty string. |
| thousands_sep | The separator between groups of digits before the decimal point, except for currency values. |
| grouping | The sizes of the groups of digits, except for currency values. |
| int_curr_symbol | The standardized international currency symbol. |
| currency_symbol | The local currency symbol. |
| mon_decimal_point | |
| The decimal point character for currency values. | |
| mon_thousands_sep | |
| The separator for digit groups in currency values. | |
| mon_grouping | Like grouping but for currency values. |
| positive_sign | The character used to denote nonnegative currency values, usually the empty string. |
| negative_sign | The character used to denote negative currency values, usually a minus sign. |
| int_frac_digits | The number of digits after the decimal point in an international-style currency value. |
| frac_digits | The number of digits after the decimal point in the local style for currency values. |
| p_cs_precedes | 1 if the currency symbol precedes the currency value for nonnegative values, 0 if it follows. |
| p_sep_by_space | 1 if a space is inserted between the currency symbol and the currency value for nonnegative values, 0 otherwise. |
| n_cs_precedes | Like p_cs_precedes but for negative values. |
| n_sep_by_space | Like p_sep_by_space but for negative values. |
| p_sign_posn |
The location of the
positive_sign
with respect to a nonnegative quantity and the
currency_symbol,
coded as follows:
|
| 0 | Parentheses around the entire string. |
| 1 | Before the string. |
| 2 | After the string. |
| 3 | Just before currency_symbol. |
| 4 | Just after currency_symbol. |
| n_sign_posn | |
| Like p_sign_posn but for negative currency values. | |
| int_p_cs_precedes | |
| Same as p_cs_precedes, but for internationally formatted monetary quantities. | |
| int_n_cs_precedes | |
| Same as n_cs_precedes, but for internationally formatted monetary quantities. | |
| int_p_sep_by_space | |
| Same as p_sep_by_space, but for internationally formatted monetary quantities. | |
| int_n_sep_by_space | |
| Same as n_sep_by_space, but for internationally formatted monetary quantities. | |
| int_p_sign_posn | |
| Same as p_sign_posn, but for internationally formatted monetary quantities. | |
| int_n_sign_posn | |
| Same as n_sign_posn, but for internationally formatted monetary quantities. | |
Unless mentioned above, an empty string as a value for a field indicates a zero length result or a value that is not in the current locale. A CHAR_MAX result similarly denotes an unavailable value.
#include<stdio.h>
#include<locale.h>
int main()
{
//Set the locale to German
char* locale = setlocale(LC_ALL,"de_DE.ISO-8859-1");
struct lconv* str = NULL;
//Check whether locale setting is succesful or not
if(NULL != locale)
{
printf("Locale setting is successful\n");
printf("Locale is set to %s\n", locale);
//Get numeric formatting information
str = localeconv();
printf("Decimal separator is %s\n", str->mon_decimal_point);
printf("Thousand separator is %s\n", str->mon_thousands_sep);
}
else
{
printf("Locale setting failed\n");
}
return 0;
}
Output
Locale setting is successful
Locale is set to de_DE.ISO-8859-1
Decimal separator is,
Thousand separator is.
|
© 2005-2007 Nokia |