Udostępnij za pośrednictwem


Ostatni znak w ciągu

Skorzystaj z poniższych wskazówek:

  • Ślad zakresów bajtów nakładania się znaków ASCII, w wielu przypadkach.Można bezpiecznie korzystać z bytewise skanowania do wszelkie znaki kontrolne (mniej niż 32).

  • Rozważmy następujący wiersz kodu, który może być sprawdzanie Jeżeli ostatni znak w ciągu jest znakiem odwrotnej kreski ukośnej:

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

    Ponieważ strlen nie jest MBCS-aware, zwraca liczbę bajtów, nie liczba znaków w ciągu znaków wielobajtowych.Ponadto należy zauważyć, że w niektórych kod strony (932, na przykład), "\" (0x5c) jest nieprawidłowy bajt (sz jest ciągiem C).

    Możliwym rozwiązaniem jest ponownie napisać kod w ten sposób:

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

    Ten kod zawiera funkcje MBCS _mbsrchr i _mbsinc.Ponieważ funkcje te są świadomi MBCS, można rozróżnić między ' \' znaków i bajt ' \'.Kod wykonuje niektóre działania, jeżeli ostatni znak w ciągu jest null (\0).

Zobacz też

Koncepcje

Porady dotyczące programowania MBCS

Przypisanie znaków