Incrementing and Decrementing Pointers
| Unicode Tasks | Multibyte 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