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中是不是含有汉字的主要内容,如果未能解决你的问题,请参考以下文章

VC MFC下 定义 CString str 怎样获取str的第二个和第三字符(用啥函数)?

Win32控制台应用程序怎样使用MFC中的CFile类?

在mfc中如何判断输入的是不是为汉字?

vc6和vc7中的CString有啥区别?

VC/MFC怎样给菜单项添加勾啊

Visual Studio 2008中MFC程序cstring转成char??急!!!大家帮下啊