CString 中文 英文 判定 如何判定CString中是否包含除中文和英文之外的字符,高手能否提供一个函数实现此功能?BOOL isValidStr(CString s){ 如果s中包含除中文或英文外的其他字符,返回false,否则返回true} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IsDBCSLeadByte()函数如何使用?MSDN中应该有详细的说明 IsDBCSLeadByte()函数 只能判断第一个字节是否是双字节字符的第一个字节 好像没法解决LZ的问题 期待高手给代码,能判断出cstring中含有除中文和英文以外的其它字符的就可以 如果CString中的编码是ANSI的,在中文下它只能包含GBK编码的字符,GBK编码的字符除了汉字,英文字母之外还有标点符号,图形字符,日文字符,罗马数字等等,你的意思是找出这些吗? 怎么看CString是什么编码的?是的,就是判断字符串中是否含有除了中文和英文外的其他字符。 你的项目用的是ANSI还是Unicode? \u4E00-\u9FA5]汉字 [0-9a-zA-Z]英文英数帮你写个DEMO, VS2008下,Unicode环境CString strText(_T("ABC中文シサス")); char* szBuf = NULL; int size = WideCharToMultiByte(CP_ACP, 0, strText, -1, szBuf, 0, NULL, NULL); szBuf = new char[size]; WideCharToMultiByte(CP_ACP, 0, strText, -1, szBuf, size, NULL, NULL); char szCH[20] = {0}; char szEn[20] = {0}; char szNum[20] = {0}; int nCH = 0; int nEn = 0; int nNum = 0; int MAX_LEN = strlen(szBuf); for(int i=0; i<MAX_LEN; ) { char ch = szBuf[i]; if((ch >= 'a' && ch <='z') || (ch >= 'A' && ch <='Z')) { // 字母 szEn[nEn++] = ch; } else if(ch >= '0' && ch <= '9') { // 数字 szNum[nNum++] = ch; } else if(ch>= 0x4e && ch <= 0x9f) { i += 1; if(i < MAX_LEN) { char ch2 = szBuf[i]; if(ch2 >= 0x00 && ch2 <= 0xa5) { szCH[nCH++] = ch; szCH[nCH++] = ch2; } } } else // 其他字符, { } i++; } if(nEn + nCH + nNum != MAX_LEN) { AfxMessageBox(_T("含有其他字符")); } 我觉得楼主问的不清楚。要先搞清楚哪些东西算是英文,是不是只有a-z的26个字母?另外还有编码的问题,即UNICODE非和UNICODE两种,对于同一个字母a,两种编码都可以,所以,用是否2个字节来判断是不可取的,否则,就只能认为UNICODE编码的a不是英文字母,但显然这样认为是不合正常使用者的习惯的 WriteFile每次最多写dword个字节么?32位系统 进程间通信啊 CMFCPropertyGridCtrl中使用 combo box 遇到 UI问题 求教 typedef定义的一个数组是什么意思 【高分求助】关于字符串转16进制问题 我用VC的Socket类创了,一个子类,出现sockcore.cpp 850行错?为什么? 请问,如何通过IP地址知道对方的计算机名。 CList 作参数怎么定义? 急切请教这个错误信息是什么意思?如何改正? MFC 所需资源不可用 如何得到对话框的backbuffer CListCtrl控件
好像没法解决LZ的问题
怎么看CString是什么编码的?
是的,就是判断字符串中是否含有除了中文和英文外的其他字符。
[0-9a-zA-Z]英文英数帮你写个DEMO, VS2008下,Unicode环境
CString strText(_T("ABC中文シサス"));
char* szBuf = NULL;
int size = WideCharToMultiByte(CP_ACP, 0, strText, -1, szBuf, 0, NULL, NULL);
szBuf = new char[size];
WideCharToMultiByte(CP_ACP, 0, strText, -1, szBuf, size, NULL, NULL); char szCH[20] = {0};
char szEn[20] = {0};
char szNum[20] = {0}; int nCH = 0;
int nEn = 0;
int nNum = 0; int MAX_LEN = strlen(szBuf);
for(int i=0; i<MAX_LEN; )
{
char ch = szBuf[i]; if((ch >= 'a' && ch <='z') || (ch >= 'A' && ch <='Z'))
{
// 字母
szEn[nEn++] = ch;
}
else if(ch >= '0' && ch <= '9')
{
// 数字
szNum[nNum++] = ch;
}
else if(ch>= 0x4e && ch <= 0x9f)
{
i += 1;
if(i < MAX_LEN)
{
char ch2 = szBuf[i];
if(ch2 >= 0x00 && ch2 <= 0xa5)
{
szCH[nCH++] = ch;
szCH[nCH++] = ch2;
}
}
}
else // 其他字符,
{ }
i++;
}
if(nEn + nCH + nNum != MAX_LEN)
{
AfxMessageBox(_T("含有其他字符"));
}
要先搞清楚哪些东西算是英文,是不是只有a-z的26个字母?另外还有编码的问题,即UNICODE非和UNICODE两种,对于同一个字母a,两种编码都可以,所以,用是否2个字节来判断是不可取的,否则,就只能认为UNICODE编码的a不是英文字母,但显然这样认为是不合正常使用者的习惯的