请问CString内容判断的技巧。。。 CString test;1、如何判断test[100]是否一个中文?2、如何判断test[100]是否一个英文?3/4、非中非英字符?俺分数池如同云南情况,刚好能发帖,今天不close帖子,过了今晚接了分适当补上,嘿嘿~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把test[100]装到另外一个单独的变量里,直接分析这个变量行不? 这和CString没什么关系了,完全是字符串判断的技巧,找专门的类做,或者自己解析 (iChar > 127) || (iChar < 0) 为中文 以下是一个针对一串字符 逐个判断其内文字类型的程序: int m_nCount = 0;CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内for(i=0; i<m_strBuff.GetLength(); i++){ if (m_nCount<m_strBuff.GetLength()) { CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本 char ch = m_strBuff.GetAt(m_nCount);//移动并定位 //如果不是ASCII字符则应把字符计数加2,否则加1 if (ch < 0 || ch >256) m_nCount++;//不是有效ascii字符,考虑是否中文 m_nCount++;//中文一个字 占用2个字节 }} VC 判断CString字符串中各位是数字,大小写字母,符号,汉字。(UNICODE和ANSI)http://www.cnblogs.com/aoyihuashao/archive/2009/12/23/1630701.html int m_nCount = 0;CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内for(i=0; i<m_strBuff.GetLength(); i++){ if (m_nCount<m_strBuff.GetLength()) { CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本 char ch = m_strBuff.GetAt(m_nCount);//移动并定位 //如果不是ASCII字符则应把字符计数加2,否则加1 if (ch < 0 || ch >256) m_nCount++;//不是有效ascii字符,考虑是否中文 m_nCount++;//中文一个字 占用2个字节 }} 自己慢慢判断吧,没什么好办法。nn年前弄过一个叫什么Lisp的,叫表处理语言,做AI用的。专门处理串,现在人们都不知道有这个东西了,呵呵。 CString str = L"0123abc雲中鶴+-*ほニホ"; CString shuzi,biaodianfuhao,hanzi,daxiezimu,xiaoxiezimu; for (int i = 0 ; i <str.GetLength();i++) { int unicode = (int)str.GetAt(i); if (unicode <= '9' && unicode >= '0') { shuzi += str.GetAt(i); } else if (unicode <= 'z' && unicode >= 'a') { xiaoxiezimu += str.GetAt(i); } else if (unicode <= 'Z' && unicode >= 'A') { daxiezimu += str.GetAt(i); } else if (unicode > 255) { hanzi += str.GetAt(i); } else { biaodianfuhao += str.GetAt(i); } } //多字节字符集 CString str; str = "0123abc雲中鶴+-*ほニホ"; int lens; lens = (int)strlen(str); unsigned char hanzi[20],daxiezimu[20],xiaoxiezimu[20],shuzi[20],biaodianfuhao[20]; unsigned char ansi; int hanzi_len,daxiezimu_len,xiaoxiezimu_len,shuzi_len,biaodianfuhao_len; hanzi_len=daxiezimu_len=xiaoxiezimu_len=shuzi_len=biaodianfuhao_len=0; for(int i=0;i<lens;i++) { ansi = str[i]; if (ansi <= '9' && ansi >= '0') { shuzi[shuzi_len++] = ansi; } else if (ansi <= 'z' && ansi >= 'a') { xiaoxiezimu[xiaoxiezimu_len++] = ansi; } else if (ansi <= 'Z' && ansi >= 'A') { daxiezimu[daxiezimu_len++] = ansi; } else if (ansi > 127) { hanzi[hanzi_len++] = ansi; hanzi[hanzi_len++] = str[++i]; } else { biaodianfuhao[biaodianfuhao_len++] = ansi; } } shuzi[shuzi_len] = '\0'; daxiezimu[daxiezimu_len] = '\0'; xiaoxiezimu[xiaoxiezimu_len] = '\0'; biaodianfuhao[biaodianfuhao_len] = '\0'; hanzi[hanzi_len] = '\0'; //判断CString中是否含有数字和/或英文等基本ASCII字符(ASCII值0~127)之外的字符BOOL CStringIsHaveCHNchar(CString strChars){ BYTE bsinglechar; BOOL bExist = FALSE; int len = strChars.GetLength(); for(int i=0;i< len;i++) { bsinglechar = (BYTE)strChars[i]; if(bsinglechar > 127) //127d = 0x7F { bExist = TRUE; return bExist;//含有英文字符和/或数字之外的字符 } } return bExist;//只有英文字符和/或数字字符} 读出数组到记事本,记事本文件大小变大了却看不到数据 句柄问题 有谁知道这是什么错误 为什么使用GetBitmap(...)得到的存储位图数据的数组是空啊????? 基于CFormView的多文档程序,页面切换时闪烁得厉害,请问怎么才能消除晃动? 在对 一未命名文件 进行访问时发生了一个不明错误 vc + ado 访问access时出错,why? 介绍本vc数据库编程的书籍(50分) 关于多国语言动态连接库的实现,有意着请关注 模拟DBGrid 网络为何失败? 使用IDispachEx接口向window的成员赋值返回成员未找到 代码被优化没了!
int m_nCount = 0;
CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内
for(i=0; i<m_strBuff.GetLength(); i++)
{
if (m_nCount<m_strBuff.GetLength())
{
CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本
char ch = m_strBuff.GetAt(m_nCount);//移动并定位
//如果不是ASCII字符则应把字符计数加2,否则加1
if (ch < 0 || ch >256)
m_nCount++;//不是有效ascii字符,考虑是否中文
m_nCount++;//中文一个字 占用2个字节
}}
CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内
for(i=0; i<m_strBuff.GetLength(); i++)
{
if (m_nCount<m_strBuff.GetLength())
{
CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本
char ch = m_strBuff.GetAt(m_nCount);//移动并定位
//如果不是ASCII字符则应把字符计数加2,否则加1
if (ch < 0 || ch >256)
m_nCount++;//不是有效ascii字符,考虑是否中文
m_nCount++;//中文一个字 占用2个字节
}}
nn年前弄过一个叫什么Lisp的,叫表处理语言,做AI用的。专门处理串,现在人们都不知道有这个东西了,呵呵。
CString shuzi,biaodianfuhao,hanzi,daxiezimu,xiaoxiezimu;
for (int i = 0 ; i <str.GetLength();i++)
{
int unicode = (int)str.GetAt(i);
if (unicode <= '9' && unicode >= '0')
{
shuzi += str.GetAt(i);
}
else if (unicode <= 'z' && unicode >= 'a')
{
xiaoxiezimu += str.GetAt(i);
}
else if (unicode <= 'Z' && unicode >= 'A')
{
daxiezimu += str.GetAt(i);
}
else if (unicode > 255)
{
hanzi += str.GetAt(i);
}
else
{
biaodianfuhao += str.GetAt(i);
}
}
//多字节字符集
CString str;
str = "0123abc雲中鶴+-*ほニホ";
int lens;
lens = (int)strlen(str);
unsigned char hanzi[20],daxiezimu[20],xiaoxiezimu[20],shuzi[20],biaodianfuhao[20];
unsigned char ansi;
int hanzi_len,daxiezimu_len,xiaoxiezimu_len,shuzi_len,biaodianfuhao_len;
hanzi_len=daxiezimu_len=xiaoxiezimu_len=shuzi_len=biaodianfuhao_len=0;
for(int i=0;i<lens;i++)
{
ansi = str[i];
if (ansi <= '9' && ansi >= '0')
{
shuzi[shuzi_len++] = ansi;
}
else if (ansi <= 'z' && ansi >= 'a')
{
xiaoxiezimu[xiaoxiezimu_len++] = ansi;
}
else if (ansi <= 'Z' && ansi >= 'A')
{
daxiezimu[daxiezimu_len++] = ansi;
}
else if (ansi > 127)
{
hanzi[hanzi_len++] = ansi;
hanzi[hanzi_len++] = str[++i];
}
else
{
biaodianfuhao[biaodianfuhao_len++] = ansi;
}
}
shuzi[shuzi_len] = '\0';
daxiezimu[daxiezimu_len] = '\0';
xiaoxiezimu[xiaoxiezimu_len] = '\0';
biaodianfuhao[biaodianfuhao_len] = '\0';
hanzi[hanzi_len] = '\0';
//判断CString中是否含有数字和/或英文等基本ASCII字符(ASCII值0~127)之外的字符
BOOL CStringIsHaveCHNchar(CString strChars)
{
BYTE bsinglechar;
BOOL bExist = FALSE;
int len = strChars.GetLength();
for(int i=0;i< len;i++)
{
bsinglechar = (BYTE)strChars[i];
if(bsinglechar > 127) //127d = 0x7F
{
bExist = TRUE;
return bExist;//含有英文字符和/或数字之外的字符
}
}
return bExist;//只有英文字符和/或数字字符
}