C語言的locale.h函數解析

轉自http://blog.chinaunix.net/uid-23137131-id-2542908.html

locale.h

#include

C語言支持本地化設定,如本地格式時間和貨幣符號

  • C格式是最小化的設定格式,在所有的系統和編譯器中有通用的相同設定,因此使用這種格式編寫的程序是可預測的。是所有C語言程序默認使用的格式。

  • 系統的默認格式使用空字符串””格式。當程序運行時,環境提供默認的本地化配置,通常包含比C格式的更多的本地化信息。

頭文件中定義lconv類型,函數setlocalelocaleconv,結合一些宏,定義本地特定信息。

注意本地配置信息影響這標準C函數庫中的很多函數的行爲:

,字符轉換規則影響strcollstrxfrm函數

,擴展字符集選擇影響了isdigitisxdigit函數以外,其他函數

,字符轉換規則影響格式化的輸入/輸出操作和小數點字符集影響數字格式化

,時間的本地化格式影響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

影響strcollstrxfrm

LC_CTYPE

影響字符處理函數和多行字符處理函數

LC_MONETRAY

影響localeconv返回的貨幣格式化信息

LC_NUMERIC

影響格式化輸入輸出字符中的小數點符號

LC_TIME

影響strftime函數

Locale

若爲“C”,則爲C本地化方式,若爲“”,則採用當前環境下的默認本地化格式


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章