1. 程式人生 > >setlocale(LC_ALL, ""); 取值為空字串" "(注意,不是NULL),則locale與本地環境所使用的編碼方式相同(在本地化時,應該很有用);

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