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