setlocale(LC_ALL, ""); 取值為空字串" "(注意,不是NULL),則locale與本地環境所使用的編碼方式相同(在本地化時,應該很有用);
在C執行庫提供的多位元組字元-寬字元轉換函式:mbstowcs()/wcstombs()中,需要用到全域性變數locale( locale encoding ),以指定多位元組字元的編碼型別
1. 功能:
用來定義全域性變數:locale(locale encoding)
標頭檔案:
setlocale <locale.h> ANSI, Win 95, Win NT
_wsetlocale <locale.h> or <wchar.h>
2. 原型:
char *setlocale( int category, const char *locale );
wchar_t *_wsetlocale( int category, const wchar_t *locale );
3. 引數:
1> category
指定全域性變數locale會影響到的範圍。巨集和對應的影響範圍如下:
LC_ALL
All categories, as listed below
LC_COLLATE
The strcoll, _stricoll, wcscoll, _wcsicoll, and strxfrm functions
LC_CTYPE
The character-handling functions (except isdigit, isxdigit, mbstowcs, and mbtowc, which are unaffected)
LC_MONETARY
Monetary-formatting information returned by the localeconv function
LC_NUMERIC
Decimal-point character for the formatted output routines (such as printf), for the data-conversion routines, and for the nonmonetary-formatting information returned by localeconv
LC_TIME
The strftime and wcsftime functions
2> locale
指定locale的名稱
如果取值為空字串" "(注意,不是NULL),則locale與本地環境所使用的編碼方式相同(在本地化時,應該很有用);
如果取值為“C”,則表示,所有的字元型別都用一位元組來表示(取值小於256)
簡體中文的locale名稱為:"chs"
4. 返回值:
如果locale和category都正確的話,會返回與指定的locale和category相關的字串;
如果locale或者category不正確的話,會返回一個null指標,目前的locale全域性變數不會改變
示例程式碼:
獲取本地所使用的語言:
void main()
{
char * localLanguage=setlocale(LC_ALL, "");
if(localLanguage==NULL)
{
printf("獲取本地語言型別失敗\n");
return;
}
printf("Locale Language is %s\n", localLanguage);
}
輸出如下:
Locale Language is Chinese_People's Republic of China.936
---------------------
作者:xiaobai1593
來源:CSDN
原文:https://blog.csdn.net/xiaobai1593/article/details/7387889
版權宣告:本文為博主原創文章,轉載請附上博文連結!
http://www.voidcn.com/article/p-dqvxrzfi-zh.html