Condividi tramite


mbstowcs_s, _mbstowcs_s_l

Converte una sequenza di caratteri multibyte in una corrispondente sequenza di caratteri wide. Versioni di mbstowcs, _mbstowcs_l con i miglioramenti della sicurezza 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
    Numero di caratteri convertiti.

  • [out] wcstr
    L'indirizzo del buffer per la risultante stringa convertita con caratteri estesi.

  • [in] sizeInWords
    Dimensione del buffer wcstr in parole.

  • [in]mbstr
    L'indirizzo di una sequenza di caratteri multibyte con terminazione null.

  • [in] count
    Il numero massimo di caratteri di tipo wide da memorizzare nel buffer wcstr, escluso il carattere di terminazione null, o _TRUNCATE.

  • [in] locale
    Impostazioni locali da utilizzare.

Valore restituito

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

Condizione di errore

Valore di ritorno e errno

wcstr è NULL e sizeInWords > 0

EINVAL

mbstr è NULL.

EINVAL

Il buffer di destinazione è troppo piccolo per contenere la stringa convertita (a meno che count sia _TRUNCATE; vedere i commenti di seguito)

ERANGE

wcstr non è NULL e sizeInWords == 0

EINVAL

Se tutte le condizioni si verificano, l'eccezione del parametro non valido viene invocata come descritto in Convalida dei parametri. Se all'esecuzione è permesso continuare, la funzione restituisce un codice di errore e imposta errno come indicato nella tabella.

Note

La funzione mbstowcs_s converte una stringa di caratteri di tipo multibyte puntati da mbstr nei caratteri wide memorizzati nel buffer puntato da wcstr. La conversione continuerà per ogni carattere finché non verrà soddisfatta una di queste condizioni:

  • Viene rilevato un carattere null multibyte

  • Viene rilevato un carattere multibyte non valido

  • Il numero di caratteri wide memorizzati nel buffer wcstr equivale a count.

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

Se count è il valore speciale _TRUNCATE, allora mbstowcs_s converte la stringa finché ci sta nel buffer di destinazione, pur lasciando spazio per un terminatore null.

Se mbstowcs_s converte correttamente la stringa di origine, inserisce la dimensione in caratteri wide della stringa convertita, incluso il terminatore null, in *pReturnValue (il valore fornito pReturnValue non è NULL). Questo accade anche se l'argomento wcstr è NULL e consente di determinare la dimensione del buffer richiesto. Si noti che se wcstr è NULL, count viene ignorato e sizeInWords deve essere 0.

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

Se le sequenze puntate da mbstr e sovrapposizione wcstr, il comportamento mbstowcs_s non è definito.

Nota sulla sicurezzaNota sulla sicurezza

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

mbstowcs_s utilizza le impostazioni locali correnti per qualsiasi comportamento dipendente dalle impostazioni locali; _mbstowcs_s_l è identica, ad eccezione del fatto che utilizza il parametro delle impostazioni locali che viene passato. Per ulteriori informazioni, vedere Impostazioni locali.

In C++ l'utilizzo di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente (eliminando la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le controparti più recenti e sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.

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 standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Conversione dei dati

Impostazioni locali

MultiByteToWideChar

Interpretazione di sequenze di caratteri multibyte

_mbclen, mblen, _mblen_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l