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


C語言 mbrlen用法及代碼示例


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

用法:

size_t mbrlen (const char* pmb, size_t max, mbstate_t* ps);
獲取多字節字符的長度
返回由指向的多字節字符的大小mb最多檢查最大限度個字節。

該函數使用(並更新)由以下內容描述的換檔狀態ps。如果ps是一個空指針,該函數使用其自己的內部換檔狀態,隻有在調用此函數時才需要進行更改。

使用空指針作為對函數的調用mb重置換檔狀態(並忽略參數最大限度)。

此函數的行為取決於LC_CTYPE所選類別C語言環境

這是可重啟的版本mblen(<cstdlib>)。

參數

pmb
指向多字節字符的第一個字節的指針。
或者,可以使用空指針調用該函數,在這種情況下,該函數將重置移位狀態(ps(或它自己的內部狀態)返回初始狀態,並返回零。
max
要檢查的最大字節數。
宏常量MB_CUR_MAX定義在當前語言環境設置下可以形成多字節字符的最大字節數。
size_t是無符號整數類型。
ps
指向一個指針mbstate_t定義轉換狀態的對象。

返回值

如果mb指向一個空字符,或者mb是一個空指針,該函數返回零。

否則,如果最多最大限度所指向的字符mb如果形成一個有效的多字節字符,該函數將返回該多字節字符的大小(以字節為單位)。

否則,如果最多最大限度字符不構成一個有效的多字節字符,該函數返回(size_t)-1和集errnoEILSEQ

否則,如果最大限度字符導致不完整(但可能有效)的多字節字符,該函數將返回(size_t)-2

注意size_t是無符號整數類型,因此可能返回的值都不小於零。

示例

/* mbrlen example */
#include <stdio.h>
#include <string.h>
#include <wchar.h>

void splitmb (const char* pt, size_t max)
{
  size_t length;
  wchar_t dest;
  mbstate_t mbs;
  int i;

  mbrlen (NULL,0,&mbs);  /* initialize state */

  while (max>0) {
    length = mbrlen (pt, max, &mbs);
    if ((length==0)||(length>max)) break;
    putchar ('[');
    for (i=0; i<length; ++i) putchar (*pt++);
    putchar (']');
    max-=length;
  }
}

int main()
{
  const char str [] = "test string";

  splitmb (str,sizeof(str));

  return 0;
}


函數splitmb將一個多字節序列分成若幹字節組,這些字節組構成每個字符。

該示例在"C"語言環境,但是該函數支持支持多字節字符串的語言環境。

輸出:

[t][e][s][t][ ][s][t][r][i][n][g]

相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C mbrlen function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。