当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

若何转换全角字符到半角字符[VC/C++编程]

赞助商链接



  本文“若何转换全角字符到半角字符[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

我们知道,在windows中,中文和全角字符都占两个字节,并且利用了ascii chart 2 (codes 128–255).我们可以凭这一点来一个个检测用户输入的能否是中文和全角字符.实际上,全角字符的第一个字节老是被置为163,而第二个字节则是相同半角字符码加上128(不包含空格).如半角a为65,则全角a则是163(第一个字节)、193(第二个字节,128+65).而关于中文来说,它的第一个字节被置为大于163,(如'阿'为:176 162),我们可以在检测到中文时不举行转换.

以上仅为我个人试验所得,而我更是学习编程不到半月.假若有错误或失漏,请大家不吝赐教.下面我给出一个例程供大家参考.

新建窗体,在窗体上安排button1、edit1、edit2.

/*在edit1中输入全角字符、中文、半角字符或稠浊输入.单击button1,edit1中的文字显示到edit2中并转换了全部的全角字符.注意,程序没有对特别字符如255(按住alt再按小键盘的2、5、5输入)等作出精确反映.*/

void __fastcall tform1::button1click(tobject *sender)
{
 int nlength=edit1->text.length();
 if (nlength==0)
  return;
 ansistring str="";
 char *ctmp=new char[nlength+1];
 strpcopy(ctmp,edit1->text);
 byte c1,c2;
 int i;
 for (i=0;i<nlength;i++)
 {
  c1=ctmp[i];
  c2=ctmp[i+1];
  if (c1==163)//判断能否为全角字符
  {
   str=str+ansistring((char)(c2-128));
   i++;
   continue;
  }
  if (c1>163)//判断能否为文字
  {
   str=str+ansistring((char)c1);
   str=str+ansistring((char)c2);
   i++;
   continue;
  }
  if ((c1==161) && (c2==161))//全角空格是个特例,另加处理
   {
    str=str+" ";
    i++;
    continue;
   }
  str=str+ ansistring(char(c1));
 }
 edit2->text=str;
 delete ctmp;ctmp=null;
}

以上代码c++builder5.0/win98 se下编译通过.


  以上是“若何转换全角字符到半角字符[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • VGA信号若何转换为AV信号
  • 若何转换全角字符到半角字符
  • MySQL 4.1 数据若何转换具体讲授
  • 举荐:MySQL 4.1 数据若何转换具体讲授
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .