使用以下提示:
在许多情况下,尾部字节范围与 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' ) ) // . . .
此代码使用 MBCS 函数
_mbsrchr
和_mbsinc
。 由于这些函数支持 MBCS,因此它们可以区分 '\' 字符和尾随字节 '\'。 如果字符串中的最后一个字符为 null ('\0'),则代码将执行一些操作。