mbtowc, _mbtowc_l

マルチバイト文字を対応するワイド文字に変換します。

構文

int mbtowc(
   wchar_t *wchar,
   const char *mbchar,
   size_t count
);
int _mbtowc_l(
   wchar_t *wchar,
   const char *mbchar,
   size_t count,
   _locale_t locale
);

パラメーター

wchar
ワイド文字のアドレス (wchar_t 型)。

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

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

locale
使用するロケール。

戻り値

そうでないNULL場合mbchar、および有効なマルチバイト文字を指している場合mbcharは、mbtowcマルチバイト文字の長さをバイト単位で返します。 ワイドNULL文字の null 文字 (L'\0') を指す場合mbchar、関数は 0 を返します。 参照先のオブジェクトが mbchar 最初 count の文字内に有効なマルチバイト文字を形成しない場合は、-1 が返されます。

解説

この関数はmbtowc、そうでない場合mbcharNULLに指すmbcharバイト数を、対応するワイド文字に変換countまたは減らします。 mbtowcないNULL場合wcharは、結果のワイド文字が wchar に格納されます。 mbtowc はバイト数を超える MB_CUR_MAX 値を調べません。 mbtowc は、ロケールに依存する動作に現在のロケールを使用します。_mbtowc_l は、渡されたロケールを代わりに使用することを除いて同じです。 詳細については、「 Locale」を参照してください。

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

必要条件

ルーチンによって返される値 必須ヘッダー
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

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

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

// crt_mbtowc.c
// Illustrates the behavior of the mbtowc function

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

int main( void )
{
    int      i;
    char    *pmbc    = (char *)malloc( sizeof( char ) );
    wchar_t  wc      = L'a';
    wchar_t *pwcnull = NULL;
    wchar_t *pwc     = (wchar_t *)malloc( sizeof( wchar_t ) );
    printf( "Convert a 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 );

    printf( "Convert multibyte character back to a wide "
            "character:\n" );
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
    printf( "   Wide character: %x\n\n", *pwc );
    printf( "Attempt to convert when target is NULL\n" );
    printf( "   returns the length of the multibyte character:\n" );
    i = mbtowc( pwcnull, pmbc, MB_CUR_MAX );
    printf( "   Length of multibyte character: %u\n\n", i );

    printf( "Attempt to convert a NULL pointer to a" );
    printf( " wide character:\n" );
    pmbc = NULL;
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
}
Convert a wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Convert multibyte character back to a wide character:
   Bytes converted: 1
   Wide character: 61

Attempt to convert when target is NULL
   returns the length of the multibyte character:
   Length of multibyte character: 1

Attempt to convert a NULL pointer to a wide character:
   Bytes converted: 0

関連項目

データ変換
MultiByteToWideChar
ロケール
マルチバイト文字シーケンスの解釈
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l