寬位元組 多位元組 mbstowcs wcstombs

2022-03-19 05:07:20 字數 1361 閱讀 5354

函式

size_t wcstombs(char *dest, const

wchar_t *src, size_t n); //wide-character to a multibyte

n:被寫入到 str 中的最大位元組數

size_t mbstowcs(wchar_t *dest, const

char *src, size_t n); //multibyte to wide-character

n:被轉換的最大字元數

char *setlocale(int category, const

char *locale);

設定當前程式使用的本地化資訊

locale:語言**_國家**.編碼。比如(zh_cn.utf-8, en_us)

int wprintf(const wchar_t *format, ...);

int fwprintf(file *stream, const wchar_t *format, ...);

int swprintf(wchar_t *wcs, size_t maxlen,

const wchar_t *format, ...);

舉例

char *str = "你好嗎";

setlocale(lc_all, "en_us.utf8");

wchar_t wbuf[64] = ;

int size = mbstowcs(wbuf, str, strlen(str));

printf("size = %d\n", size);

printf("wbuf = %ls\n", wbuf);

//wprintf(l"%s\n",wbuf); //printf二選一

# ./a.out 

size = 3

wbuf = 你好嗎

wchar_t *wstr = l"我很好";

setlocale(lc_all, "en_us.utf8");

char buf[64] = ;

int size = wcstombs(buf, wstr, sizeof(buf));

printf("size = %d\n", size);

printf("buf = %s\n", buf);

# ./a.out 

size = 9

buf = 我很好

寬位元組 多位元組 單位元組 的問題

感覺比較混亂,學習了一通,做個記錄。著急在windows下面用的話,可以先看這個 vc windows 平台字元透明程式設計大總結 寬字串與單位元組字串之間的轉換。c 標準裡面已經提供了 寬位元組轉單位元組 size twcstombs char mbstr constwchar t wcstr s...

多位元組與寬位元組之間的轉換

1 函式 widechartomultibyte 轉換 unicode 到 mbcs。lpcolestr lpw l hello,你好 size t wlen wcslen lpw 1 寬字元字元長度,1表示包含字串結束符 int alen widechartomultibyte 第一次呼叫,計算所...

windows下多位元組和寬位元組轉換

先簡單說下什麼是多位元組和寬位元組。多位元組是指使用多個位元組 1 3 表示乙個字元。比如gbk使用英文佔乙個位元組,中文佔2個,這個就是多位元組了。utf 8是使用1 3個位元組表示字元。還有big5等等。寬位元組一般是固定使用2個位元組表示乙個字元,utf 16 一般就是指unicode 1 m...