Condividi tramite


Ultimo carattere di una stringa

Attenersi ai suggerimenti indicati di seguito.

  • In molti casi, gli intervalli dei byte finali si sovrappongono al set di caratteri ASCII. È possibile eseguire senza problemi analisi byte per byte per individuare i caratteri di controllo (con codice minore di 32).

  • Si consideri la riga di codice seguente, che potrebbe rappresentare un controllo per verificare se l'ultimo carattere di una stringa sia una barra rovesciata:

    if ( sz[ strlen( sz ) - 1 ] == '\\' )    // Is last character a '\'?
        // . . .
    

    Poiché strlen non supporta il formato MBCS, restituirà il numero di byte e non il numero di caratteri di una stringa multibyte. Si osservi inoltre che in alcune tabelle codici, ad esempio la tabella 932, il carattere '\' (0x5c) corrisponde a un byte finale valido (sz è una stringa C).

    Una delle possibili soluzioni consiste nel riscrivere il codice in questo modo:

    char *pLast;
    pLast = _mbsrchr( sz, '\\' );    // find last occurrence of '\' in sz
    if ( pLast && ( *_mbsinc( pLast ) == '\0' ) )
        // . . .
    

    In questo codice vengono utilizzate le funzioni MBCS _mbsrchr e _mbsinc. Poiché supportano il formato MBCS, queste funzioni sono in grado di distinguere tra il carattere '\' e un byte finale '\'. Se l'ultimo carattere della stringa è null ('\0'), il codice svolgerà determinate operazioni.

Vedere anche

Concetti

Suggerimenti sulla programmazione MBCS

Assegnazione di caratteri