Incrementing and Decrementing Pointers

Unicode TasksMultibyte Character Set (MBCS) Tasks

Use the following tips:

  • Point to lead bytes, not trail bytes. It is usually unsafe to have a pointer to a trail byte. It’s usually safer to scan a string forward rather than in reverse.

  • There are pointer increment/decrement functions and macros available that move over a whole character:

    sz1++;
    

    becomes

    sz1 = _mbsinc( sz1 );
    

    The _mbsinc and _mbsdec functions correctly increment and decrement in character units, regardless of the character size.

  • For decrements, you need a pointer to the head of the string, as in the following:

    sz2--;
    

    becomes

    sz2 = _mbsdec( sz2Head, sz2 );
    

    Alternatively, your “head” pointer could be to a valid character in the string, such that

    sz2Head < sz2
    

    You must have a pointer to a known valid lead byte.

  • You may want to maintain a pointer to the previous character for faster calls to _mbsdec.

See Also   Byte Indices