轉自http://blog.chinaunix.net/uid-23137131-id-2542908.html
locale.h
#include
C語言支持本地化設定,如本地格式時間和貨幣符號
-
C格式是最小化的設定格式,在所有的系統和編譯器中有通用的相同設定,因此使用這種格式編寫的程序是可預測的。是所有C語言程序默認使用的格式。
-
系統的默認格式使用空字符串””格式。當程序運行時,環境提供默認的本地化配置,通常包含比C格式的更多的本地化信息。
頭文件中定義lconv類型,函數setlocale和localeconv,結合一些宏,定義本地特定信息。
注意本地配置信息影響這標準C函數庫中的很多函數的行爲:
或,字符轉換規則影響strcoll和strxfrm函數
或,擴展字符集選擇影響了isdigit和isxdigit函數以外,其他函數
或,字符轉換規則影響格式化的輸入/輸出操作和小數點字符集影響數字格式化
或,時間的本地化格式影響strftime函數
一些本地化信息能夠更好的渲染程序的輸出。
頭文件中的結構類型:
lconv:數值的格式化信息
頭文件中提供了一些函數
setlocale:設置或恢復本地化信息
localeconv:獲得本定格式化信息 返回lconv結構指針
lconv結構介紹
保存格式化的數值信息,保存數值包括貨幣和非貨幣的格式化信息,localeconv返回指向該對象的指針,以下爲結構中的成員及信息:
/*
數字(非幣值)信息 */
char *decimal_point; /* 數字的小數點號 */
char *thousands_sep; /* 數字的千分組分隔符 */
/* 每個元素爲相應組中的數字位數,索引越高的元素越靠左邊。一個值爲CHAR_MAX的元素表示沒有更多
的分組了。一個值爲0的元素表示前面的元素能用在靠左邊的所有分組中 */
char *grouping; /* 數字分組分隔符 */
/* 貨幣信息 */
/* 前面的三個字符ISO 4217中規定的貨幣符號,第四個字符是分隔符,第五個字符是'\0' */
char *int_curr_symbol;
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; /* 本地幣值的小數部分 */
/* 如果currency_symbol放在正幣值之前則爲1,否則爲0 */
char p_cs_precedes;
/* 當且僅當currency_symbol與正幣值之間用空格分開時爲1 */
char p_sep_by_space;
/* 如果currency_symbol放在負幣值之前則爲1,否則爲0 */
char n_cs_precedes;
/* 當且僅當currency_symbol與負幣值之間用空格分開時爲1 */
char n_sep_by_space;
/* 正值和負值符號的定位:
0 用圓括號括住數量和currency_symbol
1 正負號放在數量和currency_symbol之前
2 正負號放在數量和currency_symbol之後
3 正負號正好放在currency_symbol之前
4 正負號正好放在currency_symbol之後 */
char p_sign_posn;
char n_sign_posn;
函數:
struct lconv * localeconv(void)
返回指向當前lconv對象的指針,包含本地化信息
char * setlocale(int category,const char * locale);
設定或恢復本地化配置
很多運行環境包含着用戶的本地化信息,獨立於系統之外,所有的C程序採用C本地化格式,爲了使用本地環境的配置信息,調用該函數,採用“”爲函數參數。
C的本地化格式的設定形式爲:setlocale(LC_ALL,”C”)
默認的本地化格式:setlocale(LC_ALL,””);
參數:
category:以下參數爲定義在中的宏
名稱 |
影響部分 |
LC_ALL |
全部本地化信息 |
LC_COLLATE |
影響strcoll和strxfrm |
LC_CTYPE |
影響字符處理函數和多行字符處理函數 |
LC_MONETRAY |
影響localeconv返回的貨幣格式化信息 |
LC_NUMERIC |
影響格式化輸入輸出字符中的小數點符號 |
LC_TIME |
影響strftime函數 |
Locale:
若爲“C”,則爲C本地化方式,若爲“”,則採用當前環境下的默認本地化格式