C标准库参考指南系列译文(6)locale.h

英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.6.html

原文作者:Eric Huss

中文译者:柳惊鸿 Poechant

版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant


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”是空指针常量值。


6.2. setlocale

声明:

    char *setlocale(intcategory, const char *locale);


读写位置相关信息。


category的可能值有:

LC_ALL

设置所有信息。

LC_COLLATE

影响strcollstrxfrm函数。

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_posnn_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);

    }

该系列译文在持续更新中⋯⋯

C标准库参考指南系列译文(1)assert.h

C标准库参考指南系列译文(2)ctype.h

C标准库参考指南系列译文(3)errno.h

C标准库参考指南系列译文(4)float.h

C标准库参考指南系列译文(5)limits.h

C标准库参考指南系列译文(6)locale.h

C标准库参考指南系列译文(7)math.h

C标准库参考指南系列译文(8)setjmp.h

C标准库参考指南系列译文(9)signal.h

C标准库参考指南系列译文(10)stdarg.h

C标准库参考指南系列译文(11)stddef.h

C标准库参考指南系列译文(12)stdio.h(A)


版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant

-

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值