==>學習彙總(持續更新)
==>從零搭建後端基礎設施系列(一)-- 背景介紹
在locale.h標頭檔案中有個setlocale函式,它的作用是設定執行時的字符集環境。一般c/c++編譯器預設字符集環境為"c",所以你要正常輸出單個中文字元,或者用mbstowcs、wcstombs等c庫函式的時候,需要設定字符集環境為中文。
setlocale函式的原型如下:
char *setlocale(
int category,
const char *locale
);
第乙個引數msdn是這樣描述的:
the category argument specifies the parts of a program』s locale information that are affected。
大意是,這個引數指定哪一部分受你給定的語言環境所影響。具體的category請參考msdn。
第二個引數就是你所指定的語言環境。
一般中文的有如下設定:
「chinese」
「chinese-simplified」 or 「chs」
「chinese-traditional」 or 「cht」
例子1:
輸出單個中文字元
setlocale(lc_all, "chs");
wprintf(l"%c", l'你');
例子2:
窄字元轉換為寬字元
mbstowcs函式原型如下:
size_t mbstowcs(
wchar_t *wcstr,
const char *mbstr,
size_t count
);
第乙個引數是wchar_t的寬字串緩衝區,轉換後,結果儲存在裡面。
第二個引數是需要轉換的char字串
第三個轉換的最大位元組數,一般填上wchar_t陣列的大小即可
轉換單個字元
setlocale(lc_all, "chs");
wchar_t w = 0;
char c[3] = "你";
mbstowcs(&w, c, 1);
例子3:
寬字元轉換為窄字元
wcstombs函式原型如下:
size_t wcstombs(
char *mbstr,
const wchar_t *wcstr,
size_t count
);
第乙個引數是char的寬字串緩衝區,轉換後,結果儲存在裡面。
第二個引數是需要轉換的wchar_t字串
第三個轉換的最大位元組數,一般填上char陣列的大小即可
轉換單個字元
setlocale(lc_all, "chs");
wchar_t w = l'你';
char c[3] = "";
wcstombs(c, &w, 3);
printf("%c%c\n", c[0], c[1]);
寬字元和窄字元的轉換介面
寬字元和窄字元的轉換需求很經常會遇到,今天從網上找了兩個函式,修改了一下,奉獻給大家。include include std wstring towidestring const char pstr,int len std wstring towidestring const std string ...
C語言中的寬字元
我們接觸的系統 windows linux unix 都是用c語言編寫的,可想而知學好c語言有多麼重要,我們在日常寫 的過程中,大部分接觸的是ascii字元,那麼對於字元變數,我們常用的資料型別是char,但是對於中文字元,用char變數就不行了,那麼就需要使用寬字元了。下面顯示的常用的字元與寬字元...
ANSI與寬字元轉換
c語言 ansi轉轉寬字元 mbstowcs char test 64 sprintf test,hello char n printf s test wchar t testt 64 intnret mbstowcs testt,test,sizeof testt wprintf l s test...