Ultimo carattere di una stringa
Usare i suggerimenti seguenti:
Gli intervalli di byte finali si sovrappongono al set di caratteri ASCII in molti casi. È possibile usare le analisi byte per byte per qualsiasi carattere di controllo (minore di 32).
Si consideri la riga di codice seguente, che potrebbe verificare se l'ultimo carattere in una stringa è un carattere barra rovesciata:
if ( sz[ strlen( sz ) - 1 ] == '\\' ) // Is last character a '\'? // . . .
Poiché
strlen
non è compatibile con MBCS, restituisce il numero di byte, non il numero di caratteri, in una stringa multibyte. Si noti inoltre che in alcune tabelle codici (932, ad esempio), '\' (0x5c) è un byte finale valido (sz
è una stringa C).Una possibile soluzione consiste nel riscrivere il codice in questo modo:
char *pLast; pLast = _mbsrchr( sz, '\\' ); // find last occurrence of '\' in sz if ( pLast && ( *_mbsinc( pLast ) == '\0' ) ) // . . .
Questo codice usa le funzioni
_mbsrchr
MBCS e_mbsinc
. Poiché queste funzioni sono in grado di riconoscere MBCS, possono distinguere tra un carattere '\' e un byte finale '\'. Il codice esegue un'azione se l'ultimo carattere nella stringa è null ('\0').
Vedi anche
Suggerimenti sulla programmazione MBCS
Assegnazione di caratteri