當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 mbrtowc用法及代碼示例


C語言wchar頭文件(wchar.h)中mbrtowc函數的用法及代碼示例。

用法:

size_t mbrtowc (wchar_t* pwc, const char* pmb, size_t max, mbstate_t* ps);
將多字節序列轉換為寬字符
所指向的多字節字符mb轉換為類型的值wchar_t並存儲在所指向的位置pwc。該函數返回多字節字符的長度(以字節為單位)。

該函數使用(並更新)由以下內容描述的換檔狀態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和集errnoEILSEQ(沒有值存儲在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標準庫大神的英文原創作品 C mbrtowc function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。