La funzione mbrlen () in C ++ determina la dimensione in byte di un carattere multibyte.
La funzione mbrlen () è definita nel file di intestazione.
prototipo di mbrlen ()
size_t mbrlen (const char * s, size_t n, mbstate_t * ps);
La funzione mbrlen () esamina la stringa il cui primo byte è puntato da s e determina la sua dimensione in byte per lo stato di conversione corrente ps. Vengono esaminati al massimo n byte in s.
Parametri mbrlen ()
- s: puntatore al primo byte della stringa multibyte da esaminare.
- n: numero massimo di byte in s da esaminare.
- ps: puntatore all'oggetto mbstate_t che definisce uno stato di conversione.
mbrlen () Restituisce il valore
La funzione mbrlen () restituisce:
- Il numero di byte che completano un carattere multibyte valido.
- 0 se s punta a un carattere nullo.
- -1 è un errore di codifica.
- -2 se i successivi n byte non rappresentano un carattere multibyte completo.
Esempio: come funziona la funzione mbrlen ()?
#include #include #include using namespace std; void test_mbrlen(const char *s, size_t n) ( mbstate_t ps = mbstate_t(); int retVal = mbrlen(s, n, &ps); if (retVal == -2) cout << "Next " << n << " byte(s) doesn't represent a complete multibyte character" << endl; else if (retVal == -1) cout << "Next " << n << " byte(s) doesn't represent a valid multibyte character" << endl; else cout << "Next " << n << " byte(s) of " << s << " holds " << retVal << " byof multibyte character" << endl; ) int main() ( setlocale(LC_ALL, "en_US.utf8"); char str() = "u00b5"; test_mbrlen(str, 1); test_mbrlen(str, 5); return 0; )
Quando esegui il programma, l'output sarà:
Il prossimo 1 byte non rappresenta un carattere multibyte completo I successivi 5 byte di µ contengono 2 byte di carattere multibyte