_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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示