程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C標准庫參考指南(6)locale.h

C標准庫參考指南(6)locale.h

編輯:關於C語言

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved