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
.
Sintassi
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
wcstr
Indirizzo in cui archiviare la stringa di caratteri wide convertita risultante.
mbstr
Puntatore indiretto alla posizione della stringa di caratteri multibyte da convertire.
count
Numero massimo di caratteri (non byte) da convertire e archiviare in wcstr
.
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 interno mbstate_t
non è thread-safe, è consigliabile passare sempre il proprio mbstate
parametro.
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 su errno
EILSEQ
.
Osservazioni:
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 ogni carattere fino a quando non viene rilevato un carattere multibyte null di terminazione, una sequenza multibyte che non corrisponde a un carattere valido nelle impostazioni locali correnti o fino a quando count
non vengono convertiti 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
è interessato dalla LC_TYPE
categoria delle impostazioni locali correnti.
La mbsrtowcs
funzione differisce da mbstowcs
, _mbstowcs_l
in base alla riavviibilità. 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
invece di mbslen
, se viene usata una chiamata successiva a mbsrtowcs
anziché mbstowcs
.
Se wcstr
non è un puntatore Null, all'oggetto puntatore a cui mbstr
punta viene assegnato un puntatore Null se la conversione è stata arrestata perché è stato raggiunto un carattere Null di terminazione. In caso contrario, all'indirizzo viene assegnato solo oltre l'ultimo carattere multibyte convertito, se presente. Consente a una chiamata di funzione successiva di riavviare la conversione 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 mbstr
di caratteri non ha una rappresentazione di caratteri multibyte corrispondente, viene restituito un -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 Proteggere gli overload dei modelli.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Eccezioni
La mbsrtowcs
funzione è multithread safe purché nessuna funzione nel thread corrente chiami setlocale
finché questa funzione è in esecuzione e l'argomento mbstate
non è un puntatore Null.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
mbsrtowcs |
<wchar.h> |
Vedi anche
Conversione dati
impostazioni locali
Interpretazione di sequenze di caratteri multibyte
mbrtowc
mbtowc
, _mbtowc_l
mbstowcs
, _mbstowcs_l
mbsinit