Condividi tramite


wcstombs, _wcstombs_l

Converte una sequenza di caratteri di tipo " wide " a una sequenza corrispondente di caratteri multibyte.Più versioni sicure di queste funzioni sono disponibili, vedere wcstombs_s, _wcstombs_s_l.

size_t wcstombs(
   char *mbstr,
   const wchar_t *wcstr,
   size_t count 
);
size_t _wcstombs_l(
   char *mbstr,
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
size_t wcstombs(
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count 
); // C++ only
template <size_t size>
size_t _wcstombs_l(
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
); // C++ only

Parametri

  • mbstr
    l'indirizzo di una sequenza di caratteri multibyte.

  • wcstr
    L'indirizzo di una sequenza di caratteri di tipo " wide ".

  • count
    Numero massimo di byte che possono essere archiviati nella stringa di output di multibyte.

  • locale
    le impostazioni locali da utilizzare.

Valore restituito

se wcstombs correttamente converte la stringa multibyte, restituisce il numero di byte scritti nella stringa di output di multibyte, senza terminare NULL (se presente).se mbstr l'argomento è NULL, wcstombs restituisce la dimensione richiesta in byte della stringa di destinazione.se wcstombs rileva un carattere di tipo " wide " che non può convertire a un carattere multibyte, restituisce - 1 eseguito il cast nel tipo size_t e set errno in EILSEQ.

Note

wcstombs la funzione converte la stringa con caratteri estesi indicata da wcstr i caratteri multibyte e dei file corrispondenti i risultati in mbstr matrice.count il parametro indica il numero massimo di byte che possono essere archiviati nella stringa di output di multibyte (ovvero la dimensione di mbstr).È in genere non si conosce il numero di byte saranno necessari quando si converte una stringa di caratteri estesi.Alcuni caratteri di tipo " wide " richiede solo un byte nella stringa di output, altre richiedono due.Se c " è due byte in multibyte di output stringa per ogni carattere di tipo " wide " nella stringa di input (carattere di tipo " wide " compresi NULL), il risultato è garantito l'allungamento.

se wcstombs rileva il carattere null a caratteri estesi (" \ 0 ") o prima o dopo count si verifica, lo converte in un 8 bit 0 e si arresta.Pertanto, la stringa di caratteri multibyte a mbstr è con terminazione null solo se wcstombs rileva un carattere null a caratteri estesi durante la conversione.Se le sequenze puntassero da wcstr e mbstr sovrapposizione, il comportamento di wcstombs è definito.

se mbstr l'argomento è NULL, wcstombs restituisce la dimensione richiesta in byte della stringa di destinazione.

wcstombs convalida dei parametri.se wcstr viene NULL, o se count è maggiore diINT_MAX, questa funzione viene richiamato il gestore non valido di parametro, come descritto in Convalida dei parametri .Se l'esecuzione è consentita per continuare, set di funzione errno in EINVAL e restituisce -1.

wcstombs utilizza le impostazioni locali correnti per il comportamento impostazioni locali-dipendente; _wcstombs_l è identico con la differenza che utilizza le impostazioni locali passate in alternativa.Per ulteriori informazioni, vedere Impostazioni locali.

In C++, queste funzioni presentano overload del modello da richiamare le più recenti, controparti sicure di queste funzioni.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Requisiti

routine

Intestazione di associazione

wcstombs

<definito>

_wcstombs_l

<definito>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

Questo programma viene illustrato il comportamento di wcstombs funzione.

// crt_wcstombs.c
// compile with: /W3
// This example demonstrates the use
// of wcstombs, which converts a string
// of wide characters to a string of 
// multibyte characters.

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

#define BUFFER_SIZE 100

int main( void )
{
    size_t  count;
    char    *pMBBuffer = (char *)malloc( BUFFER_SIZE );
    wchar_t *pWCBuffer = L"Hello, world.";

    printf("Convert wide-character string:\n" );

    count = wcstombs(pMBBuffer, pWCBuffer, BUFFER_SIZE ); // C4996
    // Note: wcstombs is deprecated; consider using wcstombs_s instead
    printf("   Characters converted: %u\n",
            count );
    printf("    Multibyte character: %s\n\n",
           pMBBuffer );

    free(pMBBuffer);
}
  

Equivalente .NET Framework

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

Vedere anche

Riferimenti

Conversione di dati

Impostazioni locali

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb, _wctomb_l

WideCharToMultiByte