C語言wchar頭文件(wchar.h)中mbrtowc函數的用法及代碼示例。
用法:
size_t mbrtowc (wchar_t* pwc, const char* pmb, size_t max, mbstate_t* ps);
將多字節序列轉換為寬字符
該函數使用(並更新)由以下內容描述的換檔狀態ps。如果ps是一個空指針,該函數使用其自己的內部換檔狀態,隻有在調用此函數時才需要進行更改。
如果mb指向空字符時,該函數將重置移位狀態並在存儲完後返回零。寬空字符在pwc。
使用空指針作為對函數的調用mb也會重置換檔狀態,而忽略參數pwc和最大限度(沒有字符存儲廣告pwc)。
此函數的行為取決於LC_CTYPE所選類別C語言環境。
這是可重啟的版本mbtowc(<cstdlib>)。
參數
- pwc
- 指向類型的對象的指針wchar_t。
或者,此參數可以是空指針,在這種情況下,該函數不存儲wchar_t翻譯,但仍返回多字節字符的字節長度。 - pmb
- 指向多字節字符的第一個字節的指針。
或者,可以使用空指針調用該函數,在這種情況下,該函數將重置移位狀態(ps(或它自己的內部狀態)返回初始狀態,並返回零。 - max
- 讀取的最大字節數mb。
宏常量MB_CUR_MAX定義在當前語言環境設置下可以形成多字節字符的最大字節數。
size_t是無符號整數類型。 - ps
- 指向一個指針mbstate_t定義轉換狀態的對象。
返回值
來自的字節數mb用來產生寬廣的性格。如果這是null寬字符,或者mb是一個空指針,該函數返回零(在第一種情況下,空寬字符存儲在pwc)。
如果最大限度的第一個字符mb形成一個不完整(但可能有效)的多字節字符,該函數返回(size_t)-2(沒有值存儲在pwc)。
否則,如果字符指向mb如果不形成有效的多字節字符(或一個字符的開頭),則該函數將返回(size_t)-1和集errno至EILSEQ(沒有值存儲在pwc)。
注意size_t是無符號整數類型,因此可能返回的值都不小於零。
示例
/* mbrtowc example */
#include <wchar.h>
void printbuffer (const char* pt, size_t max)
{
size_t length;
wchar_t dest;
mbstate_t mbs;
mbrlen ( NULL, 0, &mbs ); /* initialize mbs */
while (max>0) {
length = mbrtowc(&dest,pt,max,&mbs);
if ((length==0)||(length>max)) break;
wprintf (L"[%lc]",dest);
pt+=length; max-=length;
}
}
int main()
{
const char str [] = "mbrtowc example";
printbuffer (str,sizeof(str));
return 0;
}
函數printbuffer按字符打印多字節字符串。
該示例在"C"語言環境,但是該函數支持支持多字節字符串的語言環境。
輸出:
[m][b][r][t][o][w][c][ ][e][x][a][m][p][l][e] |
相關用法
- C語言 fgetwc用法及代碼示例
- C語言 fgetws用法及代碼示例
- C語言 fputwc用法及代碼示例
- C語言 fputws用法及代碼示例
- C語言 fwide用法及代碼示例
- C語言 fwprintf用法及代碼示例
- C語言 fwscanf用法及代碼示例
- C語言 getwc用法及代碼示例
- C語言 getwchar用法及代碼示例
- C語言 putwc用法及代碼示例
- C語言 putwchar用法及代碼示例
- C語言 swprintf用法及代碼示例
- C語言 swscanf用法及代碼示例
- C語言 ungetwc用法及代碼示例
- C語言 vfwprintf用法及代碼示例
- C語言 vfwscanf用法及代碼示例
- C語言 vswprintf用法及代碼示例
- C語言 vswscanf用法及代碼示例
- C語言 vwprintf用法及代碼示例
- C語言 vwscanf用法及代碼示例
- C語言 wprintf用法及代碼示例
- C語言 wscanf用法及代碼示例
- C語言 wcstod用法及代碼示例
- C語言 wcstof用法及代碼示例
- C語言 wcstol用法及代碼示例
- C語言 wcstold用法及代碼示例
- C語言 wcstoll用法及代碼示例
- C語言 wcstoul用法及代碼示例
- C語言 wcstoull用法及代碼示例
- C語言 btowc用法及代碼示例
- C語言 mbrlen用法及代碼示例
- C語言 mbsinit用法及代碼示例
- C語言 wcrtomb用法及代碼示例
- C語言 wctob用法及代碼示例
- C語言 wcsrtombs用法及代碼示例
- C語言 wcscat用法及代碼示例
- C語言 wcschr用法及代碼示例
- C語言 wcscmp用法及代碼示例
- C語言 wcscpy用法及代碼示例
- C語言 wcscspn用法及代碼示例
- C語言 wcslen用法及代碼示例
- C語言 wcsncat用法及代碼示例
- C語言 wcsncmp用法及代碼示例
- C語言 wcsncpy用法及代碼示例
- C語言 wcspbrk用法及代碼示例
- C語言 wcsrchr用法及代碼示例
- C語言 wcsspn用法及代碼示例
- C語言 wcsstr用法及代碼示例
- C語言 wcstok用法及代碼示例
- C語言 wmemchr用法及代碼示例
- C語言 wmemcmp用法及代碼示例
- C語言 wmemcpy用法及代碼示例
- C語言 wmemmove用法及代碼示例
- C語言 wmemset用法及代碼示例
- C語言 wcsftime用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C mbrtowc function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。