一个字符串数组中有既有汉字又有字母,查找第N个并显示内容(急!)
定义一个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]; //¸østring·ÖÅä¿Õ¼ä
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




