La funzione wcrtomb () in C ++ converte un carattere ampio nella sua rappresentazione multibyte ristretta.
Wcrtomb () è definito nel file di intestazione.
prototipo di wcrtomb ()
size_t wcrtomb (char * s, wchar_t wc, mbstate_t * ps);
La funzione wcrtomb () converte il carattere largo rappresentato da wc in un carattere multibyte stretto e viene memorizzato nell'indirizzo indicato da s.
- Se s non è un puntatore nullo, la funzione wcrtomb () determina il numero massimo di byte necessari per memorizzare la rappresentazione multibyte di wc e la memorizza nella posizione di memoria indicata da s. È possibile scrivere un massimo di MB_CUR_MAX byte. Il valore di ps viene aggiornato come richiesto.
- Se s è un puntatore nullo, la chiamata è equivalente a
wcrtomb(buf, L' ', ps)
per qualche buf di buffer interno. - Se
wc == L' '
viene memorizzato un byte nullo.
Parametri wcrtomb ()
- s: puntatore all'array di caratteri multibyte per memorizzare il risultato.
- wc: carattere ampio da convertire.
- ps: puntatore allo stato di conversione utilizzato durante l'interpretazione della stringa multibyte
wcrtomb () Restituisce il valore
- In caso di successo, la funzione wcrtomb () restituisce il numero di byte scritti nell'array di caratteri il cui primo elemento è puntato da s.
- In caso di fallimento (cioè wc non è un carattere wide valido), restituisce -1, errno è impostato su EILSEQ e lascia * ps in uno stato non specificato.
Esempio: come funziona la funzione wcrtomb ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); wchar_t str() = L"uu00c6u00f5u01b5"; char s(16); int retVal; mbstate_t ps = mbstate_t(); for (int i=0; i
When you run the program, the output will be:
Size of u is 1 bytes Size of Æ is 2 bytes Size of õ is 2 bytes Size of Ƶ is 2 bytes