locale.h是C程式語言標準函式庫的一個標頭檔,聲明了C語言本地化函數。[1][2] 這些函數用於在處理多種自然語言的軟件編程設計時,把程式調整到特定的區域設置. 這些區域設置影響到C語言標準庫的輸入/輸出函數.
所包含的函數
C語言本地化函數與資料類型定義在locale.h (clocale標頭檔用於C++).[3]
Function | Description |
---|---|
setlocale
|
設置與讀取當前C locale |
localeconv
|
返回當前locale的貨幣與數值的格式細節 |
批評
C語言標準中定義的區域設置函數的最大問題是,區域設置狀態是全域的。這意味着一個程式在一個時刻只能有一個locale設置。實現程式同時具有多個locale是非常困難的。[4]
Visual C++執行時刻庫定義了函數_configthreadlocale
[5],可以打開或者關閉線程相關區域設置(thread-specific locale)。另外一個執行時刻庫函數_setmbcp
,線上程中建立限於本線程使用的區域設置數據結構。此後,就可以在該線程使用setlocale標準庫函數了。但此種方法僅限於Windows平台。
例子
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
/* Locale is set to "C" before this. This call sets it
to the "current locale" by reading environment variables: */
setlocale(LC_ALL, "");
const struct lconv * const currentlocale = localeconv();
printf("In the current locale, the default currency symbol is: %s\n",
currentlocale->currency_symbol);
return EXIT_SUCCESS;
}
參考文獻
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.