我有个从BSTR转过来的CString:BSTR szFormat
CString csFormat = W2A(szFormat);csFormat中是英文和汉字混合的字符串
我想把这个字符串按一个字符一个字符,而不是一个字节一个字节的读出来
然后每个字符做判断再处理我现在有一段循环:
while( iLen<csFormat.GetLength())
{
if(csFormat.GetAt(iLen) == '|')
{
按GetAt()处理的,但是这样,如果碰上像"億"这样的生僻字,第二个字节就是"|"
这样循环会出问题所以我需要一个字符一个字符的处理
是需要先转成unicode么?
大家有什么例子么?
CString csFormat = W2A(szFormat);csFormat中是英文和汉字混合的字符串
我想把这个字符串按一个字符一个字符,而不是一个字节一个字节的读出来
然后每个字符做判断再处理我现在有一段循环:
while( iLen<csFormat.GetLength())
{
if(csFormat.GetAt(iLen) == '|')
{
按GetAt()处理的,但是这样,如果碰上像"億"这样的生僻字,第二个字节就是"|"
这样循环会出问题所以我需要一个字符一个字符的处理
是需要先转成unicode么?
大家有什么例子么?
_ismbstrail
BOOL canBeChineseFirstByte=TRUE; //add by xxx 20040617 当前字节可能为汉字的第一个字节时 while( iLen<csFormat.GetLength())
{
//add if&else by xxx 20040618 对汉字进行处理
if(canBeChineseFirstByte)//如果当前字节可能为汉字的第一个字节时
{
if(iLen && IsDBCSLeadByte(csFormat.GetAt(iLen-1)))//如果不是字符串第一个字节且前一个字节为汉字的第一个字节时
{
prevByteIsChineseFirstByte=TRUE;//前一个字节为汉字第一个字节
canBeChineseFirstByte=FALSE;//设置下一个字节即汉字的第二个字节在处理时不能被认为是汉字的第一个字节
}
else
{
prevByteIsChineseFirstByte=FALSE;
canBeChineseFirstByte=TRUE;
}
}
else//当前字节不可能为汉字的第一个字节
{
prevByteIsChineseFirstByte=FALSE;
canBeChineseFirstByte=TRUE;
}//end of add by xxx 20040618
if(csFormat.GetAt(iLen) == '|' && !prevByteIsChineseFirstByte)//add && !prevByteIsChineseFirstByte by xxx 20040618 如果当前字节为'|'且当前字节不在汉字中时
{