次の方法で共有


_mbclenmblen_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マルチバイト文字cの長さに応じて、1 または 2 を返_mbclen_lcがマルチバイトであるかどうかに関係なく、関数は常に UTF-8 に対して 1 を返します。 _mbclenのエラーが返されません。

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

解説

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

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

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

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

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「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
strlenwcslen_mbslen_mbslen_l_mbstrlen_mbstrlen_l