_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
マルチバイト文字c
の長さに応じて、1 または 2 を返_mbclen_l
。 c
がマルチバイトであるかどうかに関係なく、関数は常に UTF-8 に対して 1 を返します。 _mbclen
のエラーが返されません。
mbstr
がNULL
されていない場合は、マルチバイト文字の長さをバイト単位で返mblen
_mblen_l
。 mblen
関数と_mblen_l
関数は UTF-8 で正しく動作し、1 から 3 の値を返す場合があります。 mbstr
がNULL
(またはワイド文字の 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
は同じように動作しますが、代わりに渡されたロケール パラメーターを使用します。 詳細については、「 setlocale
と Locale」を参照してください。
_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
strlen
、 wcslen
、 _mbslen
、 _mbslen_l
、 _mbstrlen
、 _mbstrlen_l