Condividi tramite


mbsrtowcs

Converte una stringa di caratteri multibyte delle impostazioni locali correnti in una stringa di caratteri wide corrispondente, con la possibilità di ricominciare nel mezzo di un carattere multibyte. È disponibile una versione più sicura di questa funzione; vedere mbsrtowcs_s.

size_t mbsrtowcs(    wchar_t *wcstr,    const char **mbstr,    sizeof count,    mbstate_t *mbstate ); template <size_t size> size_t mbsrtowcs(    wchar_t (&wcstr)[size],    const char **mbstr,    sizeof count,    mbstate_t *mbstate ); // C++ only

Parametri

  • [out] wcstr
    Indirizzo in cui archiviare la stringa di caratteri wide convertita risultante.

  • [in, out] mbstr
    Puntatore indiretto alla posizione della stringa di caratteri multibyte da convertire.

  • [in] count
    Numero massimo di caratteri (non byte) da convertire e archiviare in wcstr.

  • [in, out] mbstate
    Puntatore a un oggetto stato di conversione mbstate_t. Se questo valore è un puntatore Null, viene usato un oggetto stato di conversione interno statico. Poiché l'oggetto mbstate_t interno non è thread-safe, è consigliabile passare sempre un parametro mbstate fornito dall'utente.

Valore restituito

Restituisce il numero di caratteri convertito correttamente, escluso il carattere di terminazione Null, se presente. Restituisce (size_t)(-1) se si è verificato un errore e imposta errno su EILSEQ.

Note

La funzione mbsrtowcs converte una stringa di caratteri multibyte a cui punta indirettamente mbstr in caratteri wide archiviati nel buffer a cui punta wcstr, usando lo stato di conversione contenuto in mbstate. La conversione continua per ciascun carattere fino a quando non viene rilevato un carattere multibyte di terminazione Null, non viene rilevata una sequenza multibyte che non corrisponde a un carattere valido nelle impostazioni locali correnti o non vengono convertiti count caratteri. Se mbsrtowcs rileva il carattere multibyte Null ('\0') nel momento in cui si verifica count o subito prima, lo converte in un carattere di terminazione Null a 16 bit e si arresta.

Pertanto, la stringa di caratteri wide in wcstr termina con Null solo se mbsrtowcs rileva un carattere multibyte Null durante la conversione. Se le sequenze a cui punta mbstr e wcstr si sovrappongono, il comportamento di mbsrtowcs non è definito. mbsrtowcs viene influenzato dalla categoria LC_TYPE delle impostazioni locali correnti.

La funzione mbsrtowcs differisce da mbstowcs, _mbstowcs_l per la possibilità di essere riavviata. Lo stato di conversione viene archiviato in mbstate per le chiamate successive alle stesse o ad altre funzioni riavviabili. I risultati non sono definiti quando si usano insieme funzioni riavviabili e non riavviabili. Ad esempio, un'applicazione deve usare mbsrlen anziché mbslen se viene usata una chiamata successiva a mbsrtowcs anziché mbstowcs..

Se wcstr non è un puntatore Null, all'oggetto puntatore a cui punta mbstr viene assegnato un puntatore Null se la conversione è stata arrestata in quanto è stato raggiunto un carattere di terminazione Null. In caso contrario, viene assegnato l'indirizzo subito dopo l'ultimo carattere multibyte convertito, se presente. Ciò consente a una chiamata di funzione successiva di riavviare la conversione nel punto in cui la chiamata è stata arrestata.

Se l'argomento wcstr è un puntatore Null, l'argomento count viene ignorato e mbsrtowcs restituisce le dimensioni necessarie in caratteri wide per la stringa di destinazione. Se mbstate è un puntatore Null, la funzione userà un oggetto stato di conversione mbstate_t interno statico non thread-safe. Se la sequenza di caratteri mbstr non ha una rappresentazione di caratteri multibyte corrispondente, viene restituito -1 e errno viene impostato su EILSEQ.

Se mbstr è un puntatore Null, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno suEINVAL e restituisce -1.

In C++, questa funzione presenta un overload di modello che richiama la relativa controparte sicura più recente. Per altre informazioni, vedere Overload di modelli sicuri.

Eccezioni

La funzione mbsrtowcs è multithread-safe finché nessuna funzione nel thread corrente chiama setlocale, finché questa funzione è in esecuzione e l'argomento mbstate non è un puntatore Null.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione C standard, usare PInvoke. Per altre informazioni, vedere Esempi di platform invoke.

Requisiti

Routine

Intestazione obbligatoria

mbsrtowcs

<wchar.h>

Vedere anche

Riferimenti

Conversione dei dati

Impostazioni locali

Interpretazione di sequenze di caratteri multibyte

mbrtowc

mbtowc, _mbtowc_l

mbstowcs, _mbstowcs_l

mbsinit