當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


C語言 setlocale用法及代碼示例

C語言locale頭文件(locale.h)中setlocale函數的用法及代碼示例。

用法:

char* setlocale (int category, const char* locale);
設置或檢索語言環境
設置當前程序要使用的語言環境信息,或者更改整個語言環境或部分語言環境。該函數還可用於通過傳遞來檢索當前語言環境的名稱NULL作為參數值locale

語言環境包含有關如何解釋和執行某些輸入/輸出以及轉換操作的信息,並考慮了位置和特定於語言的設置。

大多數運行環境都會根據用戶首選項或本地化設置某些本地化信息。但是,獨立於該係統語言環境,所有C程序在開始時都具有"C"語言環境集,這是一個相當中性的語言環境,具有最少的語言環境信息,可以使程序的結果可預測。為了在環境中使用默認的語言環境設置,可以使用""作為論點locale

程序啟動時,選擇的語言環境是"C" locale,與通過調用設置的相同setlocale(LC_ALL,"C")

可以通過調用選擇在環境中選擇的語言環境設置setlocale(LC_ALL,"")

受此函數調用影響的當前語言環境部分由參數指定category

參數

category
受影響的語言環境的部分。它是以下常量值之一,在其中定義為宏<clocale>
受影響的區域的一部分
LC_ALL整個語言環境。
LC_COLLATE影響行為strcollstrxfrm
LC_CTYPE影響字符處理函數(<cctype>, 除了isdigitisxdigit),以及多字節和寬字符函數。
LC_MONETARY影響由返回的貨幣格式設置信息localeconv
LC_NUMERIC影響格式化的輸入/輸出操作和字符串格式化函數中的小數點字符,以及返回的非貨幣信息localeconv
LC_TIME影響行為strftime
locale
包含C語言環境名稱的C字符串。這些是特定於係統的,但是至少必須存在以下兩個語言環境:
區域名稱描述
"C"最小的"C"語言環境
""環境的默認語言環境
如果此參數的值為NULL,該函數不會對當前語言環境進行任何更改,但是函數仍會返回當前語言環境的名稱。

返回值

成功後,指向C字符串的指針,該字符串標識當前為category。如果categoryLC_ALL並且將語言環境的不同部分設置為不同的值,返回的字符串以庫實現之間可能有所不同的格式提供此信息。

如果該函數無法設置新的語言環境,則不會進行修改,並且將返回空指針。

示例

/* setlocale example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, time, localtime, strftime */
#include <locale.h>     /* struct lconv, setlocale, localeconv */

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  struct lconv * lc;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );

  int twice=0;

  do {
    printf ("Locale is: %s\n", setlocale(LC_ALL,NULL) );

    strftime (buffer,80,"%c",timeinfo);
    printf ("Date is: %s\n",buffer);

    lc = localeconv ();
    printf ("Currency symbol is: %s\n-\n",lc->currency_symbol);

    setlocale (LC_ALL,"");
  } while (!twice++);

  return 0;
}


運行前麵的代碼時,可能的輸出之一是:
Locale is: C
Date is: 01/15/07 13:33:47
Currency symbol is: 
-
Locale is: English_United States.1252
Date is: 1/15/07 1:33:47 PM
Currency symbol is: $
-



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C setlocale function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。