C ++ mbsrtowcs () - Libreria standard C ++

La funzione mbsrtowcs () in C ++ converte una sequenza di caratteri multibyte stretta in una sequenza di caratteri ampia (di tipo wchar_t).

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

Prototipo mbsrtowcs ()

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

La funzione mbsrtowcs () converte la stringa di caratteri multibyte il cui primo byte è rappresentato da * src nella corrispondente rappresentazione di caratteri wide ed è memorizzata nella matrice di caratteri wide a cui punta dest. Un massimo di caratteri len larghi viene scritto in dest.

Il processo di conversione è simile alla chiamata ripetuta di mbrtowc (). La conversione si interrompe se:

  • Un carattere null multibyte è stato convertito e memorizzato. In questo caso, src è impostato su null e ps rappresenta lo stato di spostamento iniziale.
  • È stato rilevato un carattere multibyte non valido. In questo caso, src è impostato per puntare l'inizio del primo carattere multibyte non convertito.
  • len wide character è stato memorizzato in dest. In questo caso, src è impostato per puntare l'inizio del primo carattere multibyte non convertito.

Parametri mbsrtowcs ()

  • dest: puntatore all'array in cui è memorizzato il carattere wide convertito.
  • src: puntatore al puntatore al primo carattere multibyte da convertire.
  • len: numero massimo di caratteri da memorizzare.
  • ps: puntatore allo stato di conversione utilizzato durante l'interpretazione della stringa multibyte

mbsrtowcs () Restituisce il valore

  • In caso di esito positivo, la funzione mbsrtowcs () restituisce il numero di caratteri larghi scritti in dest escluso il carattere null ampio di terminazione. Se dest è un puntatore nullo, restituisce il numero di caratteri larghi che sarebbero stati scritti considerando una lunghezza illimitata.
  • In caso di errore di conversione, viene restituito -1 e errno viene impostato su EILSEQ .

Esempio: come funziona la funzione mbsrtowcs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Quando esegui il programma, l'output sarà:

 Numero di caratteri larghi scritti (esclusa L " 0") = 4 Caratteri larghi = ݣݗݿݟ

Articoli interessanti...