C尺度库参考指南(6)locale.h
副标题#e#
6. locale.h
头文件locale对配置详细位置信息很有用。
变量:
struct lconv
宏:
NULL
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME
函数:
localeconv();
setlocale();
6.1. Variables and Definitions
数据布局“lconv”包括下面这些成员变量。这个数据布局的利用,将在“6.3 localeconv”中描写。
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;
宏“LC_”将会在6.2 setlocale中描写。“NULL”是空指针常量值。
#p#副标题#e#
6.2. setlocale
声明:
char *setlocale(intcategory, const char *locale);
读写位置相关信息。
category的大概值有:
LC_ALL 配置所有信息。
LC_COLLATE 影响strcoll和strxfrm函数。
LC_CTYPE 影响所有字符函数。
LC_MONETARY 影响由localeconv函数提供的钱币信息。
LC_NUMERIC 影响十进制小数名目和localeconv函数提供的信息。
LC_TIME 影响strftime函数。
"C"可以将locale置为正常的C翻译情况配置(默认)。空值(即"")可将locale值为当地情况配置。空指针(NULL)会使“setlocale”函数返回一个指向与当前配置对应的category相关联的字符串的指针(不发生任何改变)。其他所有值由实现确定。
在乐成配置后,setlocale函数会返回一个指向之前的位置信息配置的字符串。若失败,则返回NULL。
实例:
#include<locale.h> #include<stdio.h> int main(void) { char *old_locale; old_locale=setlocale(LC_ALL,"C"); printf("The preivous setting was %s.\n",old_locale); return 0; }
6.3. localeconv
声明:
struct lconv *localeconv(void);
置“lconv”数据布局为当前的位置信息配置。
在这个数据布局中的字符串指针,大概指向一个空串(即""),这表白这个值是不行用的。字符范例都长短负整数。假如值为CHAR_MAX,则这个值不行用。
lconv成员变量:
char *decimal_point 非钱币值的十进制数的小数点标记。
char *thousands_sep 非钱币值的千位脱离符。
char *grouping 一个表白在非钱币数量中每组巨细的字符串。每个字符代表一个整数值中相应数字组的巨细。0值暗示最前面的值也代表后头每个组的值。
char *int_curr_symbol 用于国际钱币标记。前面的三个字符遵从ISO 4217:1987尺度,第四个字符断绝钱币标记和钱币值。
char *currency_symbol 当地钱币标记。
char *mon_decimal_point 钱币值的十进制数的小数点标记。
char *mon_thousands_sep 钱币值的千位脱离符。
char *mon_grouping 与grouping雷同,可是是用于钱币值的。
char *positive_sign 正钱币值标记。
char *negative_sign 负钱币值标记。
char int_frac_digits 国际钱币值中,小数点后头的数字个数。
char frac_digits 钱币值中,小数点后头的数字个数。
char p_cs_precedes 个中的cs暗示currency symbol。假如该值取1的时候,currency_symbol呈此刻一个正钱币值前面。假如该值取0的时候,currency_symbol呈此刻一个负钱币值后头。
char p_sep_by_space 个中的sep暗示separate。假如该值取1的时候,则用空格将currency_symbol和正钱币值脱离开。假如该值取0,则不消空格将currency_symbol和正钱币值脱离开。
char n_cs_precedes 与p_cs_precedes雷同,不外是针对负钱币值的。
char n_sep_by_space 与p_sep_precedes雷同,不外是针对负钱币值的。
char p_sign_posn 在正钱币值中positive_sign的位置。
char n_sign_posn 在负钱币值中negative_sign的位置。
下面这些值用于p_sign_posn和n_sign_posn:
0 圆括号来包裹数值和钱币标记。
1 标记放在数值和钱币标记前。
2 标记放在数值和钱币标记后。
3 标记直接放在钱币标记前。
4 标记直接放在钱币标记后。
实例:
#include<locale.h> #include<stdio.h> int main(void) { struct lconv locale_structure; struct lconv *locale_ptr=&locale_structure; locale_ptr=localeconv(); printf("Decimal point: %s",locale_ptr->decimal_point); printf("Thousands Separator: %s",locale_ptr->thousands_sep); printf("Grouping: %s",locale_ptr->grouping); printf("International Currency Symbol: %s",locale_ptr->int_curr_symbol); printf("Currency Symbol: %s",locale_ptr->currency_symbol); printf("Monetary Decimal Point: %s",locale_ptr->mon_decimal_point); printf("Monetary Thousands Separator: %s",locale_ptr->mon_thousands_sep); printf("Monetary Grouping: %s",locale_ptr->mon_grouping); printf("Monetary Positive Sign: %s",locale_ptr->positive_sign); printf("Monetary Negative Sign: %s",locale_ptr->negative_sign); printf("Monetary Intl Decimal Digits: %c",locale_ptr->int_frac_digits); printf("Monetary Decimal Digits: %c",locale_ptr->frac_digits); printf("Monetary + Precedes: %c",locale_ptr->p_cs_precedes); printf("Monetary + Space: %c",locale_ptr->p_sep_by_space); printf("Monetary - Precedes: %c",locale_ptr->n_cs_precedes); printf("Monetary - Space: %c",locale_ptr->n_sep_by_space); printf("Monetary + Sign Posn: %c",locale_ptr->p_sign_posn); printf("Monetary - Sign Posn: %c",locale_ptr->n_sign_posn); }
英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.6.html
原文作者:Eric Huss
中文译者:柳惊鸿 Poechant
版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant