?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<locale.h>中定義 | ||
---|---|---|
char * setlocale(int category,const char * locale); |
setlocale
函數(shù)將指定的系統(tǒng)語言環(huán)境或其部分作為新的C語言環(huán)境安裝。這些修改仍然有效,并會影響到所有區(qū)域設(shè)置敏感的C庫函數(shù)的執(zhí)行,直到下一次調(diào)用setlocale
。如果locale
是空指針,則setlocale
查詢當(dāng)前的C語言環(huán)境而不修改它。
category | - | 區(qū)域設(shè)置類別標(biāo)識符,其中一個LC_xxx宏??赡転閚ull。 |
---|---|---|
locale | - | 系統(tǒng)特定的區(qū)域設(shè)置標(biāo)識符。對于用戶首選語言環(huán)境可以是“”,對于最小語言環(huán)境可以是“C” |
指向一個以null結(jié)尾的空字符串的指針,該字符串在應(yīng)用更改后標(biāo)識C語言環(huán)境(如果有)或空指針失敗。
返回的字符串以及此次調(diào)用中使用的類別的副本setlocale
可能會稍后在程序中用于將語言環(huán)境恢復(fù)到此調(diào)用結(jié)束時的狀態(tài)。
在程序啟動期間,等同于setlocale(LC_ALL, "C");
在任何用戶代碼運行之前執(zhí)行。
雖然返回類型是char*
,但修改指向的字符是未定義的行為。
由于setlocale
修改影響的區(qū)域設(shè)置相關(guān)的函數(shù)執(zhí)行的全局狀態(tài),它是不確定的行為,從一個線程調(diào)用它,而另一個線程正在執(zhí)行任意的功能如下:fprintf
,isprint
,iswdigit
,localeconv
,tolower
,fscanf
,ispunct
,iswgraph
,mblen
,toupper
,isalnum
,isspace
,iswlower
,mbstowcs
,towlower
,isalpha
,isupper
,iswprint
,mbtowc
,towupper
,isblank
,iswalnum
,iswpunct
,setlocale
,wcscoll
,iscntrl
,iswalpha
,iswspace
,strcoll
,wcstod
,isdigit
,iswblank
,iswupper
,strerror
,wcstombs
,isgraph
,iswcntrl
,iswxdigit
,strtod
,wcsxfrm
,islower
,iswctype
, isxdigit
.
POSIX還定義了一個名為“POSIX”的語言環(huán)境,該語言環(huán)境始終可以訪問,并且完全等同于默認(rèn)的最小“C”語言環(huán)境。
POSIX還指定返回的指針,不僅僅是指向字符串的內(nèi)容,可能會通過后續(xù)對setlocale的調(diào)用而失效。
#include <stdio.h>#include <locale.h>#include <time.h>#include <wchar.h> int main(void){ // the C locale will be UTF-8 enabled English; // decimal dot will be German // date and time formatting will be Japanese setlocale(LC_ALL, "en_US.UTF-8"); setlocale(LC_NUMERIC, "de_DE"); setlocale(LC_TIME, "ja_JP"); wchar_t str[100]; time_t t = time(NULL); wcsftime(str, 100, L"%A %c", localtime(&t)); wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);}
可能的輸出:
Number: 3,14Date: 木曜日 2014年11月06日 09時58分56秒
C11標(biāo)準(zhǔn)(ISO/IEC 9899:2011):
7.11.1.1 setlocale函數(shù)(p:224-225)
C99標(biāo)準(zhǔn)(ISO/IEC 9899:1999):
7.11.1.1 setlocale函數(shù)(p:205-206)
C89/C90標(biāo)準(zhǔn)(ISO/IEC 9899:1990):
4.4.1.1 setlocale函數(shù)
LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME | locale categories for setlocale (macro constant) |
---|
| C ++文檔的setlocale |