C ++ mbrtoc16 () - Libreria standard C ++

La funzione mbrtoc16 () in C ++ converte un carattere multibyte stretto in una rappresentazione di caratteri a 16 bit.

La funzione mbrtoc16 () è definita nel file di intestazione.

prototipo mbrtoc16 ()

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

La funzione mbrtoc16 () converte al massimo n carattere multibyte rappresentato da s nel suo equivalente carattere utf-16 e lo memorizza nella posizione di memoria puntata da pc16.

Se s rappresenta un puntatore nullo, i valori di ne pc16 vengono ignorati e la chiamata a è equivalente a mbrtoc16 (NULL, "", 1, ps).

Se il carattere risultante prodotto è nullo, lo stato di conversione * ps rappresenta lo stato di spostamento iniziale.

Parametri mbrtoc16 ()

  • pc16: puntatore alla posizione di memoria per memorizzare il carattere a 16 bit risultante.
  • s: puntatore al carattere multibyte da convertire.
  • n: numero massimo di byte in s da convertire.
  • ps: puntatore a un oggetto mbstate_t utilizzato durante l'interpretazione della stringa multibyte.

mbrtoc16 () Restituisce il valore

La funzione mbrtoc16 () restituisce il primo dei seguenti valori che corrisponde ai casi seguenti:

  • 0 se il carattere convertito è un carattere nullo.
  • il numero di byte (al massimo n) del carattere multibyte che è stato convertito con successo in un carattere a 16 bit.
  • -3 se il successivo char16_tda un carattere multi-char16_t (ad esempio una coppia surrogata) è stato ora scritto in * pc16. In questo caso non vengono elaborati byte dall'ingresso.
  • -2 se i successivi n byte costituiscono un carattere multibyte incompleto, ma finora valido. In questo caso non viene scritto nulla su * pc16.
  • -1 se si verifica un errore di codifica. In questo caso non viene scritto nulla in * pc16, errno è impostato su EILSEQ e il valore di * ps non è specificato.

Esempio: come funziona la funzione mbrtoc16 ()?

 #include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )

Quando esegui il programma, l'output sarà:

 Stringa multibyte = x Lengt> h = 1 carattere a 16 bit = 0x0078

Articoli interessanti...