C ++ wcsrtombs () - Libreria standard C ++

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

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

prototipo di wcsrtombs ()

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

La funzione wcsrtombs () converte la stringa di caratteri wide rappresentata da * src nella corrispondente stringa di caratteri multibyte e viene memorizzata nella matrice di caratteri a cui punta dest se dest non è null. Viene scritto un massimo di len caratteri in dest.

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

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

Parametri wcsrtombs ()

  • > dest: puntatore all'array di caratteri in cui è memorizzato il carattere multibyte convertito.
  • src: puntatore al puntatore al primo carattere largo da convertire.
  • len: numero massimo di byte disponibili nell'array di destinazione.
  • ps: puntatore all'oggetto dello stato di conversione.

wcsrtombs () Restituisce il valore

  • In caso di esito positivo, la funzione wcsrtombs () restituisce il numero di caratteri multibyte scritti in dest escluso il carattere null ampio di terminazione ma comprese le sequenze di spostamento.
    Se dest è un puntatore nullo, restituisce il numero di caratteri larghi che sarebbero stati scritti escludendo il carattere nullo di terminazione.
  • In caso di errore di conversione, viene restituito -1 e errno viene impostato su EILSEQ .

Esempio: come funziona la funzione wcsrtombs ()?

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

Quando esegui il programma, l'output sarà:

 Numero di caratteri multibyte scritti (escluso " 0") = 8 Carattere multibyte = ݣݗݿݟ

Articoli interessanti...