mbrtoc16
, mbrtoc32
Converte il primo carattere multibyte UTF-8 in una stringa nel carattere UTF-16 o UTF-32 equivalente.
Sintassi
size_t mbrtoc16(
char16_t* destination,
const char* source,
size_t max_bytes,
mbstate_t* state
);
size_t mbrtoc32(
char32_t* destination,
const char* source,
size_t max_bytes,
mbstate_t* state
);
Parametri
destination
Puntatore all'oggetto char16_t
o char32_t
equivalente del carattere multibyte UTF-8 da convertire. Se null, la funzione non archivia un valore.
source
Puntatore alla stringa di caratteri multibyte UTF-8 da convertire.
max_bytes
Numero massimo di byte in source
da esaminare per un carattere da convertire. Questo argomento deve essere un valore compreso tra uno e il numero di byte, incluso qualsiasi carattere di terminazione Null, rimanente in source
.
state
Puntatore a un mbstate_t
oggetto stato di conversione usato per interpretare la stringa multibyte UTF-8 in uno o più caratteri di output.
Valore restituito
In caso di esito positivo, restituisce il valore della prima di tali condizioni che si applica, dato il corrente valore state
:
Valore | Condizione |
---|---|
0 | I caratteri successivi max_bytes o minori convertiti da source corrispondono al carattere wide Null, ovvero il valore archiviato se destination non è Null.state contiene lo stato iniziale di spostamento. |
Tra 1 e max_bytes , inclusi |
Il valore restituito è il numero di byte di source che completa un carattere multibyte valido. Il carattere wide convertito viene archiviato se destination non è Null. |
-3 | Il carattere wide successivo risultante da una chiamata precedente alla funzione è stato archiviato in destination se destination non è Null. Nessun byte da source viene utilizzato da questa chiamata alla funzione.Quando source punta a un carattere multibyte UTF-8 che richiede più caratteri wide per rappresentare (ad esempio, una coppia di surrogati), il state valore viene aggiornato in modo che la chiamata di funzione successiva scriva il carattere aggiuntivo. |
-2 | I byte successivi max_bytes rappresentano un carattere multibyte UTF-8 incompleto, ma potenzialmente valido. Nessun valore viene archiviato in destination . Questo risultato può verificarsi se max_bytes è zero. |
-1 | Si è verificato un errore di codifica. I byte successivi max_bytes o minori non contribuiscono a un carattere multibyte UTF-8 completo e valido. Nessun valore viene archiviato in destination .EILSEQ viene archiviato in errno e il valore state dello stato di conversione non è specificato. |
Osservazioni:
La mbrtoc16
funzione legge fino a max_bytes
byte da source
per trovare il primo carattere multibyte UTF-8 valido e quindi archivia il carattere UTF-16 equivalente in destination
. Se il carattere richiede più di un carattere di output UTF-16, ad esempio una coppia di surrogati, il state
valore viene impostato per archiviare il carattere UTF-16 successivo nella destination
chiamata successiva a mbrtoc16
. La funzione mbrtoc32
è identica, ma l'output viene archiviato come carattere UTF-32.
Se source
è Null, queste funzioni restituiscono l'equivalente di una chiamata effettuata usando argomenti di NULL
per destination
, ""
(stringa con terminazione Null vuota) per source
e 1 per max_bytes
. I valori passati di destination
e max_bytes
vengono ignorati.
Se source
non è Null, la funzione inizia all'inizio della stringa ed esamina fino a max_bytes
byte per determinare il numero di byte necessari per completare il successivo carattere multibyte UTF-8, incluse eventuali sequenze di spostamento. Se i byte esaminati contengono un carattere multibyte UTF-8 valido e completo, la funzione converte il carattere in caratteri o caratteri a 32 bit o a 16 bit equivalenti. Se destination
non è Null, la funzione archivia il primo (e possibilmente solo) carattere di risultato nella destinazione. Se sono necessari caratteri di output aggiuntivi, viene impostato un valore in state
, in modo che le chiamate successive alla funzione restituiscano i caratteri aggiuntivi e restituiscono il valore -3. Se non sono più necessari caratteri di output, state
viene impostato sullo stato iniziale di spostamento.
Per convertire caratteri multibyte non UTF-8 in caratteri UTF-16 LE, usare le mbrtowc
funzioni , mbtowc o _mbtowc_l .
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Funzione | Intestazione C | Intestazione C++ |
---|---|---|
mbrtoc16 , mbrtoc32 |
<uchar.h> | <cuchar> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Vedi anche
Conversione dati
impostazioni locali
Interpretazione di sequenze di caratteri multibyte
c16rtomb
, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s