C語言寬字元輸出和轉換

2021-07-27 22:09:01 字數 1640 閱讀 7414

==>學習彙總(持續更新)

==>從零搭建後端基礎設施系列(一)-- 背景介紹

在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...