Поделиться через


Последний символ в строке

Используйте следующие советы:

  • Диапазоны байтов пути перекрывают набор символов ASCII во многих случаях. Вы можете безопасно использовать байтовые проверки для любых символов элемента управления (менее 32).

  • Рассмотрим следующую строку кода, которая может проверить, является ли последний символ в строке символом обратной косой черты:

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

    Так как strlen он не учитывает MBCS, он возвращает количество байтов, а не количество символов в многобайтовой строке. Кроме того, обратите внимание, что на некоторых кодовых страницах (например, 932), '\' (0x5c) является допустимым байтом следа (sz является строкой C).

    Одним из возможных решений является перезапись кода следующим образом:

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

    Этот код использует функции _mbsrchr MBCS и _mbsinc. Так как эти функции поддерживают MBCS, они могут различать символ "\" и байт следа "\". Код выполняет некоторое действие, если последний символ в строке имеет значение NULL ('\0').

См. также

Советы по программированию многобайтовой кодировки
Присваивание символов