C ++ mbrtoc32 () - Libreria standard C ++

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

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

Prototipo mbrtoc32 ()

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

La funzione mbrtoc32 () converte al massimo n carattere multibyte rappresentato da s nel suo equivalente carattere utf-32 e lo memorizza nella posizione di memoria indicata da pc32.

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

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

Parametri mbrtoc32 ()

  • pc32: puntatore alla posizione di memoria per memorizzare il carattere a 32 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.

mbrtoc32 () Restituisce il valore

La funzione mbrtoc32 () 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 32 bit.
  • -3 se il successivo char32_tda un carattere multi-char32_t (ad esempio una coppia surrogata) è stato ora scritto in * pc32. 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 * pc32.
  • -1 se si verifica un errore di codifica. In questo caso non viene scritto nulla su * pc32, errno è impostato su EILSEQ e il valore di * ps non è specificato.

Esempio: come funziona la funzione mbrtoc32 ()?

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

Quando esegui il programma, l'output sarà:

 Stringa multibyte = x Lunghezza = 1 carattere a 32 bit = 0x00000078

Articoli interessanti...