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 影響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