mbtowc、_mbtowc_lmbtowc, _mbtowc_l

マルチバイト文字を対応するワイド文字に変換します。Convert a multibyte character to a corresponding wide character.

構文Syntax

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
);

パラメーターParameters

wcharwchar
ワイド文字 (型) のアドレス wchar_tAddress of a wide character (type wchar_t).

mbcharmbchar
バイト シーケンスのアドレス (マルチバイト文字)。Address of a sequence of bytes (a multibyte character).

countcount
チェックするバイト数。Number of bytes to check.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

MbcharNULLではなく、 mbcharが参照するオブジェクトが有効なマルチバイト文字を指している場合、 mbtowcはマルチバイト文字の長さをバイト単位で返します。If mbchar is not NULL and if the object that mbchar points to forms a valid multibyte character, mbtowc returns the length in bytes of the multibyte character. Mbcharnullの場合、または参照先のオブジェクトがワイド文字の null 文字 (L ' \ 0 ') の場合、関数は0を返します。If mbchar is NULL or the object that it points to is a wide-character null character (L'\0'), the function returns 0. Mbcharが指すオブジェクトが、最初のカウント文字の中で有効なマルチバイト文字を形成していない場合は、-1 を返します。If the object that mbchar points to does not form a valid multibyte character within the first count characters, it returns -1.

解説Remarks

Mbtowc関数は 、Mbchar が NULLではない場合に、 mbcharが指すバイト数を、対応するワイド文字に変換します。The mbtowc function converts count or fewer bytes pointed to by mbchar, if mbchar is not NULL, to a corresponding wide character. mbtowcは、 wcharNULLでない場合、結果のワイド文字をwcharに格納します。mbtowc stores the resulting wide character at wchar, if wchar is not NULL. mbtowcは、 MB_CUR_MAXバイトを超えているかどうかを確認しません。mbtowc does not examine more than MB_CUR_MAX bytes. mbtowcは、ロケールに依存する動作に現在のロケールを使用します。_mbtowc_lは、渡されたロケールを代わりに使用する点を除いて同じです。mbtowc uses the current locale for locale-dependent behavior; _mbtowc_l is identical except that it uses the locale passed in instead. 詳細については、「 Locale」を参照してください。For more information, see Locale.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
mbtowcmbtowc <stdlib.h>
_mbtowc_l_mbtowc_l <stdlib.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.

ライブラリLibraries

C ランタイム ライブラリのすべてのバージョン。All versions of the C run-time libraries.

Example

// 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

関連項目See also

データ変換Data Conversion
MultiByteToWideCharMultiByteToWideChar
ロケールLocale
マルチバイト文字のシーケンスの解釈Interpretation of Multibyte-Character Sequences
_mbclen、mblen、_mblen_l_mbclen, mblen, _mblen_l
wcstombs、_wcstombs_lwcstombs, _wcstombs_l
wctomb、_wctomb_lwctomb, _wctomb_l