Sdílet prostřednictvím


Poslední znak v řetězci

Postupujte následovně:

  • Rozsahy posledního bajtu přesahují znakový standard ASCII v mnoha případech. Můžete bezpečně použít prohledávání po bajtech pro libovolné řídící znaky (menší než 32).

  • Zvažte následující řádek kódu, který může kontrolovat, zda poslední znak v řetězeci je znak zpětného lomítka:

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

    Protože strlen nepodporuje znakovou sadu MBCS, vrátí počet bajtů, nikoli počet znaků ve vícebajtovém řetězeci. Také si všimněte, že v některých znakových stránkách (například 932) je "\" (0x5c) poslední platný bajt (sz je řetězec C).

    Jedním z možných řešení je přepsání kódu tímto způsobem:

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

    Tento kód používá funkce znakové sady MBCS _mbsrchr a _mbsinc. Vzhledem k tomu, že tyto funkce nepodporují znakovou sadu MBCS, lze rozlišit mezi znakem "\" a posledním bajtem "\". Kód provede určitou akci, pokud je poslední znak v řetězci null ('\0).

Viz také

Koncepty

Programovací tipy znakové sady MBCS

Znak přiřazení