vc++ mfc 中怎样判断CString中是不是含有汉字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc++ mfc 中怎样判断CString中是不是含有汉字相关的知识,希望对你有一定的参考价值。
大哥大姐们,用CString::GetAt()的方法我试过了,但是貌似行不通,能不能贴段代码啊?
参考技术A 貌似不行,mfc编码采用的是ascii,所以无法判断cstring中是否有汉字. 参考技术B 先把MBCS字符串转换成Unicode字符串,再判断就ok了。转换方法可参考我空间里的文章后半部分:http://hi.baidu.com/%BA%CE%B4%A6%B4%E3%CE%E2%B9%B3/blog/item/91080e3234604ef01a4cfff3.html本回答被提问者采纳 参考技术C 查看字节最高位是1还是0,具体做法是str.GetAt()&0xF0如果为真则表示这个字符和下个字符是一个中文字符。否则反之 参考技术D bool containChinese(CString src)
char *szSRC = src.GetBuffer(src.GetLength());
for(int i = 0; i < src.GetLength(); ++i)
if(IsDBCSLeadByte(szSRC[i]))
rc.ReleaseBuffer();
return true;
src.ReleaseBuffer();
return false;
第5个回答 2010-06-22 char chText = CString::GetAt(i);
if (chText < 0)
AfxMessageBox("中文");
else
AfxMessageBox("非中文");
在mfc中如何判断输入的是不是为汉字?
假设我用CString存放一组字符串,该字符串中有汉字和字母,我该如何判断哪些是字母,哪些是汉字呢?
CString m_str("hi中文hello");LPCTSTR str = m_str; //把CString类型转换为char* 类型
for (int i=0;str[i];i++)
if (str[i] < 0) //一个中文占两个字节,且每个字节都是小于0的
CString tmp;
tmp.Format("%c%c",str[i],str[i+1]);//把中文输出,举个例子
i++;
MessageBox(tmp);
参考技术A 顶一个,汉字字符高位为1,并且为双字节的。
判断是否小于0就好。
以上是关于vc++ mfc 中怎样判断CString中是不是含有汉字的主要内容,如果未能解决你的问题,请参考以下文章