Condividi tramite


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