首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - Visual C++ 阅读:4555   评论: 3    参与评论
标题   VC里面如何拆分含汉字与字母的字符串     选择自 langzi84 的 Blog
关键字   VC里面如何拆分含汉字与字母的字符串
出处  

给别人的程序打补丁,出现了需要拆分含汉字,字母的字符串的情况,到网上搜到的都是同一段代码

"************* 截取字符串 **************
Function InterceptString(txt,length)
txt=trim(txt)
x = len(txt)
y = 0
if x >= 1 then
for ii = 1 to x
if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then "如果是汉字
y = y + 2
else
y = y + 1
end if
if y >= length then 
txt = left(trim(txt),ii) "字符串限长
exit for
end if
next
InterceptString = txt
else
InterceptString = ""
end if
End Function 

结果就是测试有些情况下拆分出现乱码,郁闷了好半天,终于发现是网上的这段到处转贴的代码是有错误的,其实这个错误很简单的,就是因为自己没有仔细检查一下就用结果,^_^,这次偶给更正了,希望以后看到的人不会郁闷了.

void CAaaView::OnButton1()
{
 // TODO: Add your control notification handler code here
 CString ChargeItemName;
 CString aa = "9494858受得失测试585858585888d888888888888888";
 int len=0;
 ChargeItemName=InterceptString(len,aa);
 AfxMessageBox(ChargeItemName);               

 len=ChargeItemName.GetLength();
 ChargeItemName=aa.Mid(len); 
 AfxMessageBox(ChargeItemName);
}
CString CAaaView::InterceptString(int qlen, CString strSource)
{
 int len,i,y;
 CString sTemp,sreturn,ceshi;

 strSource.TrimLeft();strSource.TrimRight();
 len=strSource.GetLength();
 y=0;
 sTemp=strSource.Right(len-qlen); 
 
 for(i=0;i<len;i++)
 {
  if(sTemp[y]<0 || sTemp[y]>255)
   y=y+2;
  else
   y=y+1;
  if(y>=26)
   break;
 }
 ceshi.Format("%d",y);
 AfxMessageBox(ceshi);
 sreturn=sTemp.Left(y);

 return sreturn;
}


相关文章
对该文的评论
CSDN 网友 ( 2005-04-18)
不知所云
CSDN 网友 ( 2005-03-24)
试试下面代码看看
bool ExtraChsChar(const CString &strSrc, CString &strChs, CString &strEng) 
{
BYTE btElement;
UINT nSrcLength, nCnt;
CString str1Chs;

if(strSrc.IsEmpty())
{
printf("#error:The source string is null!");
return false;
}
//
str1Chs = "11";
strChs.Empty();
strEng.Empty();
nSrcLength = strSrc.GetLength();

for(nCnt = 0; nCnt < nSrcLength; )
{
btElement = (BYTE)strSrc.GetAt(nCnt);

if(btElement < 128)
{
strEng += btElement;
nCnt++;
}
else
{
str1Chs.SetAt(0, btElement);
str1Chs.SetAt(1, (BYTE)strSrc.GetAt(nCnt+1));
strChs += str1Chs;
nCnt += 2;
}

}
return TRUE;

}
CSDN 网友 ( 2005-03-24)
为什么要这样:
     if(y>26)
       break;