?
Ce document utilise Manuel du site Web PHP chinois Libérer
在頭文件<locale.h>中定義 | ||
---|---|---|
char * setlocale(int category,const char * locale); |
setlocale
函數(shù)將指定的系統(tǒng)語言環(huán)境或其部分作為新的C語言環(huán)境安裝。這些修改仍然有效,并會影響到所有區(qū)域設置敏感的C庫函數(shù)的執(zhí)行,直到下一次調用setlocale
。如果locale
是空指針,則setlocale
查詢當前的C語言環(huán)境而不修改它。
category | - | 區(qū)域設置類別標識符,其中一個LC_xxx宏??赡転閚ull。 |
---|---|---|
locale | - | 系統(tǒng)特定的區(qū)域設置標識符。對于用戶首選語言環(huán)境可以是“”,對于最小語言環(huán)境可以是“C” |
指向一個以null結尾的空字符串的指針,該字符串在應用更改后標識C語言環(huán)境(如果有)或空指針失敗。
返回的字符串以及此次調用中使用的類別的副本setlocale
可能會稍后在程序中用于將語言環(huán)境恢復到此調用結束時的狀態(tài)。
在程序啟動期間,等同于setlocale(LC_ALL, "C");
在任何用戶代碼運行之前執(zhí)行。
雖然返回類型是char*
,但修改指向的字符是未定義的行為。
由于setlocale
修改影響的區(qū)域設置相關的函數(shù)執(zhí)行的全局狀態(tài),它是不確定的行為,從一個線程調用它,而另一個線程正在執(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)境始終可以訪問,并且完全等同于默認的最小“C”語言環(huán)境。
POSIX還指定返回的指針,不僅僅是指向字符串的內容,可能會通過后續(xù)對setlocale的調用而失效。
#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標準(ISO/IEC 9899:2011):
7.11.1.1 setlocale函數(shù)(p:224-225)
C99標準(ISO/IEC 9899:1999):
7.11.1.1 setlocale函數(shù)(p:205-206)
C89/C90標準(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 |