Condividi tramite


mbstowcs_s, _mbstowcs_s_l

Converte una sequenza di caratteri multibyte in una sequenza di caratteri "wide" corrispondente.Le versioni di mbstowcs, _mbstowcs_l con miglioramenti della protezione come descritto in Funzionalità di sicurezza in CRT.

errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count 
);
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count 
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count,
   _locale_t locale
); // C++ only

Parametri

  • [out] pReturnValue
    Il numero di caratteri convertiti.

  • [out] wcstr
    Convertire l'indirizzo del buffer per la stringa di caratteri estesi.

  • [in] sizeInWords
    La dimensione del wcstr buffer in parole.

  • [in]mbstr
    L'indirizzo di una sequenza di null è terminato caratteri multibyte.

  • [in] count
    Il numero massimo di caratteri estesi per memorizzare nel wcstr buffer, escluso il valore null di terminazione o _TRUNCATE.

  • [in] locale
    Impostazioni internazionali da utilizzare.

Valore restituito

Zero se con esito positivo, un codice di errore in caso di errore.

Condizione di errore

Valore restituito eerrno

wcstris NULL and sizeInWords > 0

EINVAL

mbstr è NULL.

EINVAL

Il buffer di destinazione è troppo piccolo per contenere la stringa convertita (a meno che non count è _TRUNCATE; vedere la sezione Osservazioni riportata di seguito)

ERANGE

wcstris not NULL and sizeInWords == 0

EINVAL

Se una di queste condizioni si verifica, l'eccezione di parametro non valido viene richiamato come descritto in Convalida dei parametri .Se è consentito continuare l'esecuzione, la funzione restituisce un codice di errore e imposta errno come indicato nella tabella.

Note

Il mbstowcs_s funzione converte una stringa di caratteri multibyte a cui fa riferimento mbstr in caratteri wide memorizzati nel buffer a cui fa riferimento wcstr.La conversione continuerà per ogni carattere fino a quando non viene soddisfatta una delle seguenti condizioni:

  • Viene rilevato un valore null di caratteri multibyte

  • Viene rilevato un carattere multibyte non valido

  • Il numero di caratteri estesi, memorizzati nel wcstr buffer è uguale a count.

La stringa di destinazione è sempre con terminazione null (anche in caso di errore).

Se count è il valore speciale _TRUNCATE, quindi mbstowcs_s converte la maggior parte della stringa venga adatta nel buffer di destinazione, lasciando ancora spazio per un carattere di terminazione null.

Se mbstowcs_s correttamente converte la stringa di origine, inserisce la dimensione in caratteri "wide" della stringa convertita, includendo il terminatore null, in *pReturnValue (purché pReturnValue non NULL).Questo problema si verifica anche se il wcstr argomento è NULL e fornisce un modo per determinare la dimensione del buffer necessaria.Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.

Se mbstowcs_s incontra un carattere multibyte non valido, inserisce 0 in *pReturnValue, imposta il buffer di destinazione su una stringa vuota, imposta errno a EILSEQe restituisce EILSEQ.

Se le sequenze a cui fa riferimento mbstr e wcstr si sovrappongono, il comportamento di mbstowcs_s non è definito.

Nota sulla sicurezzaNota sulla sicurezza

Assicurarsi che wcstr e mbstr non si sovrappongono e che count rifletta correttamente il numero di caratteri multibyte da convertire.

mbstowcs_sutilizza le impostazioni internazionali correnti per qualsiasi comportamento dipendente dalle impostazioni internazionali; _mbstowcs_s_lè identico ad eccezione del fatto che utilizza le impostazioni internazionali passata.Per ulteriori informazioni, vedere Impostazioni locali.

In C++, utilizzando queste funzioni viene semplificata dall'overload del modello; gli overload possono dedurre automaticamente la lunghezza di buffer (eliminando la necessità di specificare un argomento size) e possono sostituire automaticamente le funzioni meno recenti, non protetta con le rispettive controparti più recente e sicure.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Requisiti

Routine

Intestazione obbligatoria

mbstowcs_s

<stdlib.h>

_mbstowcs_s_l

<stdlib.h>

Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.

Equivalente .NET Framework

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

Vedere anche

Riferimenti

Conversione di dati

Impostazioni locali

MultiByteToWideChar

Interpretazione delle sequenze di caratteri multibyte

_mbclen, mblen, _mblen_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l