_mbclen, mblen, _mblen_l, _mbclen_l

長さを取得し、マルチバイト文字の有効性を決定します。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
int mblen(
   const char *mbstr,
   size_t count
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

パラメーター

c
マルチバイト文字。

mbstr
マルチバイト文字のバイト シーケンスのアドレス。

count
チェックするバイト数。

locale
使用するロケール。

戻り値

_mbclen マルチ _mbclen_l バイト文字 cの長さに応じて、1 または 2 を返します。 関数は、マルチバイトかどうかに関係なく c 、UTF-8 の場合は常に 1 を返します。 に対 _mbclenするエラーの戻り値はありません。

そうでないNULL場合mbstrは、 mblen_mblen_lマルチバイト文字の長さをバイト単位で返します。 および_mblen_l関数は mblen UTF-8 で正しく動作し、1 から 3 の値を返す場合があります。 is の場合 mbstr (またはワイド文字の null 文字を指す) mblen_mblen_l 0 を返NULLします。 指すオブジェクトは、mbstr最初countの文字内で有効なマルチバイト文字を形成するかmblen_mblen_l、-1 を返す必要があります。

解説

_mbclen 関数は、マルチバイト文字 c の長さをバイト単位で返します。 マルチバイト文字の先頭バイトを指さない場合 c (暗黙的な呼び出し _ismbbleadによって決定されます)、結果 _mbclen は予測できません。

mblen は、有効なマルチバイト文字の場合の mbstr 長さをバイト単位で返します。 また、コード ページに関連付けられているマルチバイト文字の有効性も確認します。 mblen は、count に含まれる mbstr 以下で、MB_CUR_MAX を超えない数のバイトを調べます。

出力値は、ロケールの LC_CTYPE カテゴリ設定の影響を受けます。 これらの関数の _l サフィックスのないバージョンは、ロケールに依存するこの動作で現在のロケールを使用します。 サフィックス付きバージョンは _l 同じように動作しますが、代わりに渡されたロケール パラメーターを使用します。 詳細については、「ロケールを参照してくださいsetlocale

_mbclen_mblen_l_mbclen_l Microsoft 固有であり、Standard C ライブラリの一部ではありません。 移植可能なコードが必要な場合、これらを使用することはお勧めしません。 Standard C 互換の場合は、代わりに使用するか、代mbrlenわりに使用mblenします。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチンのマップ

Tchar.h のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tclen マクロまたはインライン関数にマップされます _mbclen マクロまたはインライン関数にマップされます

必要条件

ルーチンによって返される値 必須ヘッダー
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

互換性の詳細については、「 Compatibility」を参照してください。

// crt_mblen.c
/* illustrates the behavior of the mblen function
*/

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert wide character to multibyte character:\n" );
    wctomb_s( &i, pmbc, sizeof(char), wc );
    printf( "   Characters converted: %u\n", i );
    printf( "   Multibyte character: %x\n\n", *pmbc );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

関連項目

文字分類
ロケール
マルチバイト文字シーケンスの解釈
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l