Condividi tramite


wcrtomb

Convertire un carattere di tipo " wide " nella relativa rappresentazione di caratteri multibyte.Una versione più sicura di questa funzione è disponibile; vedere wcrtomb_s.

size_t wcrtomb(
   char *mbchar,
   wchar_t wchar,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
   char (&mbchar)[size],
   wchar_t wchar,
   mbstate_t *mbstate
); // C++ only

Parametri

  • [out] mbchar
    il carattere convertito multibyte risultante.

  • [in] wchar
    Un carattere di tipo da convertire.

  • [in] mbstate
    Un puntatore a un oggetto mbstate_t oggetto.

Valore restituito

Restituisce il numero di byte necessari per rappresentare il carattere multibyte convertito in caso contrario, un -1 se si verifica un errore.

Note

wcrtomb la funzione consente di convertire un carattere di tipo " wide ", a partire dallo stato specificato di conversione contenuto in mbstate, il valore contenuto in wchar, l'indirizzo rappresentato da mbchar.Il valore restituito è il numero di byte necessari per rappresentare il carattere multibyte corrispondente, ma non restituirà più di MB_CUR_MAX byte.

se mbstate è null, l'interno mbstate_t oggetto che contiene lo stato di conversione mbchar viene utilizzato.se la sequenza di caratteri wchar non dispone di una rappresentazione di caratteri multibyte corrispondente, -1 viene restituito e errno è impostato su EILSEQ.

wcrtomb la funzione è diverso da wctomb, _wctomb_l dal restartability.Lo stato di conversione viene archiviato in mbstate per le chiamate successive agli stessi o ad altre funzioni restartable.I risultati vengono definiti quando si combinano l'utilizzo delle funzioni restartable e nonrestartable.Ad esempio, un'applicazione utilizzerebbe wcsrlen anziché wcsnlen, se una chiamata successiva a wcsrtombs sono stati utilizzati anziché wcstombs.

In C++, la funzione presenta un overload del modello che richiama le più recenti, controparti sicure di tale funzione.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Eccezioni

wcrtomb la funzione è multithread-safe se nessuna funzione nelle chiamate del thread corrente setlocale questa funzione è in esecuzione e l'eventuale mbstate è null.

Esempio

// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    size_t      sizeOfCovertion = 0;
    mbstate_t   mbstate;
    char        mbStr = 0;
    wchar_t*    wcStr = L"Q";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
    // Note: wcrtomb is deprecated; consider using wcrtomb_s instead
    if (sizeOfCovertion > 0)
    {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wcStr);
        printf(" was converted to the \"%c\" ", mbStr);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Requisiti

routine

Intestazione di associazione

wcrtomb

<wchar.h>

Vedere anche

Riferimenti

Conversione di dati

Impostazioni locali

Interpretazione delle sequenze di caratteri multibyte

mbsinit