CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

一个字符串数组中有既有汉字又有字母,查找第N个并显示内容(急!)

楼主ymhmax(Max is my faith)2004-12-04 19:13:39 在 C/C++ / C++ 语言 提问

定义一个Cstring,  
  protected:char   hz[3];//存储找到的汉字或字母  
   
  char*   Cstring::GetValue(int   iNum)   const//取得第N个位置内容  
  {  
  unsigned   char*   string1;  
  int   nIndex=0;       //指针位置,起始位置为0  
  int   iRead=0;         //读取了第几个位置  
   
   
  string1   =   (unsigned   char*)string;//转换成无符号型来判断ASC=======  
   
  while(   iRead<iNum   )//移动指针到准确的位置上,判断是汉字还是英文,如果是汉字移动2次  
  {  
  if(   (*string1   &   0x80)   &&   (*(string1+1)   &   0x80)   )//chinese  
  {  
  nIndex+=2;  
  string1+=2;  
  }  
  else                         //English  
  {  
  nIndex=nIndex+1;  
  string1+=1;;  
  }  
  iRead++;  
  }  
  //读取  
  if(   (*string1   &   0x80)   &&   (*(string1+1)   &   0x80)   )//chinese  
  {  
  memcpy(hz,string1);  
  hz[3]='\0';  
  }  
  else                                               //chinese  
  {  
  memcpy(hz,string1);  
  hz[3]='\0';  
  }  
  return   hz;  
  }  
  问题:              
        1、这个数组既有汉字也有字母,应用什么类型存放呢?  
        这个程序不可行,却不知道问题在那里?  
  问题点数:20、回复次数:8Top

1 楼ymhmax(Max is my faith)回复于 2004-12-04 19:14:46 得分 0

顶!Top

2 楼ymhmax(Max is my faith)回复于 2004-12-04 19:18:12 得分 0

补充:  
  Cstring::Cstring(   char*   str)//构造函数  
  {  
  unsigned   char   *str1;  
  int   i=strlen(str1);  
  int   iLength=strlen(str);  
  string=new   char[iLength+1];                   //&cedil;&oslash;string·&Ouml;&Aring;&auml;&iquest;&Otilde;&frac14;&auml;  
  strcpy(string,str);  
   
  }  
  Cstring::Cstring  
  {  
  protected:  
          char*   string;  
  }Top

3 楼knocker(小克)回复于 2004-12-04 20:18:53 得分 15

看看这里  
  http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=87449&forum_id=Top

4 楼ymhmax(Max is my faith)回复于 2004-12-04 22:12:49 得分 0

我已经判断出这个字,但我想把那个字返回  
   
  char*   hz;  
  char*   ptr;  
  memcpy(hz,ptr,2);;//指针已经指乡那个字的地址//为什么一到这里就报错呢?会出现一个对话框  
  hz[3]='0';  
   
  该怎样读取字或字母,并将它返回?Top

5 楼ymhmax(Max is my faith)回复于 2004-12-04 22:17:47 得分 0

up!  
   
  应该是memcp的问题,可我又不知道怎么处理了?  
  返回是  
  return   hz;Top

6 楼Alanbus(Alan)回复于 2004-12-05 01:37:13 得分 5

char*   Cstring::GetValue(int   iNum)   const//取得第N个位置内容  
  {  
  unsigned   char*   string1;  
  int   nIndex=0;       //指针位置,起始位置为0  
  int   iRead=0;         //读取了第几个位置  
   
   
  string1   =   (unsigned   char*)string;//转换成无符号型来判断ASC=======  
   
  while(   iRead<iNum   )//移动指针到准确的位置上,判断是汉字还是英文,如果是汉字移动2次  
  {  
  if(   (*string1   &   0x80)   &&   (*(string1+1)   &   0x80)   )//chinese  
  {  
  nIndex+=2;  
  string1+=2;  
  }  
  else                         //English  
  {  
  nIndex=nIndex+1;  
  string1+=1;;  
  }  
  iRead++;  
  }  
  //读取  
  if(   (*string1   &   0x80)   &&   (*(string1+1)   &   0x80)   )//chinese  
  {  
  memcpy(hz,string1,2);  
  hz[2]='\0';  
  }  
  else                                               //chinese  
  {  
  memcpy(hz,string1,1);  
  hz[1]='\0';  
  }  
  return   hz;  
  }  
  你试一试吧,不行再说Top

7 楼ymhmax(Max is my faith)回复于 2004-12-05 14:04:48 得分 0

一运行到这里就出现对话框,不知道问题出在哪里?  
  memcpy(hz,string1,2);  
  Top

8 楼ymhmax(Max is my faith)回复于 2004-12-05 14:15:31 得分 0

忘记hz分配内存空间了,谢谢大家的帮助!Top

相关问题

  • 字符串指针数组
  • 请教:字符串数组
  • 字符串数组处理
  • 字符串数组赋值
  • 字符串数组比较
  • 汉字组成的字符串转成char[]数组,再组合起来就出现乱码
  • 求判断一字符串在数组中字符串函数?
  • 怎么给字符串型的二维数组赋字符串
  • 字符串指针数组1
  • 关于非字符串数组上限?

关键词

  • 字母
  • 内容
  • iread
  • 位置
  • n个
  • cstring
  • unsigned
  • string1
  • char

得分解答快速导航

  • 帖主:ymhmax
  • knocker
  • Alanbus

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo