Condividi tramite


mbtowc, _mbtowc_l

Converte un carattere multibyte un carattere esteso corrispondente.

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

Parametri

  • wchar
    Indirizzo di un carattere di tipo (tipo wchar_t).

  • mbchar
    Indirizzo di una sequenza di byte (caratteri multibyte).

  • count
    Numero di byte da controllare.

  • impostazioni locali
    Impostazioni locali da utilizzare.

Valore restituito

Se mbchar non è NULL e se l'oggetto a cui mbchar punta per formare un carattere multibyte valido, mbtowc restituisce la lunghezza in byte del carattere multibyte. Se mbchar è NULL o l'oggetto al quale punta è un carattere null a caratteri estesi (L'\0'), la funzione restituisce 0. Se l'oggetto a cui punta mbchar non forma un carattere multibyte valido nei primi count caratteri, restituisce -1.

Note

La funzione mbtowc converte count o meno byte puntati da mbchar, se mbchar non è NULL, in un carattere esteso corrispondente. mbtowc archivia il carattere esteso risultante in wchar, se wchar non è NULL. mbtowc non esamina più byte di MB_CUR_MAX. mbtowc utilizza le impostazioni locali correnti per il comportamento dipendente dalle impostazioni locali; _mbtowc_l è identico con la differenza che utilizza le impostazioni locali passate invece. Per ulteriori informazioni, vedere Impostazioni locali.

Requisiti

Routine

Intestazione obbligatoria

mbtowc

<stdlib.h>

_mbtowc_l

<stdlib.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Librerie

Tutte le versioni delle Librerie di runtime C.

Esempio

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

Output

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

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Conversione dei dati

MultiByteToWideChar

Impostazioni locali

Interpretazione di sequenze di caratteri multibyte

_mbclen, mblen, _mblen_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l