大送分:关于字符串处理的菜鸟级问题(2)

yokel 2003-08-06 12:30:29
1. CString s1="abc";
int i=100;
如何运算方可得到“abc100”
2.如何判断一个字符是汉字
3.如何判断字符串中汉字的位置
如“a我sdf啊asd”中“啊”的位置为6
...全文
27 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yokel 2003-08-08
  • 打赏
  • 举报
回复
已经查收,谢谢,
我马上给分

To tigerfox(风之力:=初级程序员.奋斗.被开发中)
请到
http://expert.csdn.net/Expert/topic/2109/2109709.xml?temp=.3279993
作个记号,好凑100分给你。
tigerfox 2003-08-07
  • 打赏
  • 举报
回复
查收
yokel 2003-08-07
  • 打赏
  • 举报
回复
谢谢
tigerfox 2003-08-06
  • 打赏
  • 举报
回复
cao,我搞了近一年的汉字编码,包括什么gb2312,gb18031,big5,unicode...
tigerfox 2003-08-06
  • 打赏
  • 举报
回复
记住,CString的Find方法是不行的,它是按单字节计算的。
tigerfox 2003-08-06
  • 打赏
  • 举报
回复
1 CString s1("abc") , s2("中");
CString strMerge;
strMerge.Format("%s%d",s1,i);

2 bool bHz = (s2[0]&0x80) && (s2[1]&0x80) ;

3 CString strText(a我sdf啊asd") ,strDest("啊");
int nPos = 1;
for ( int i=0; i<strText.GetLength() ; nPos++,i++ )
{
if ( strText[i]>0x80 )
{
if( (strDest[0]==strText[i]) && (strDest[1]==strText[i+1]) )
{
break;
}
i++;
}
}

CString strOutput;
strOutput.Format("你要找的汉字位置是%d",nPos);
AfxMessageBox(strOutput);


以上我都没测试过。
@BruceYan@ 2003-08-06
  • 打赏
  • 举报
回复
1.sl.Format("%s%d",sl,i);
2.汉字的首字节都是大于0x80的。
CString str("汉");
BYTE ch = str.GetAt(0);
那么ch 一定大于0x80,记住,只有汉字的头字节可用来判断。
3.CString str("a我sdf啊asd");
int nPos = str.Find("啊");
joy0861 2003-08-06
  • 打赏
  • 举报
回复
我只能答第一个问题。
CString s2;
char buffer[4];
itoa(i,buffer,10);
//参数说明,1、整形变量2、字符数组3、以什么数制转换,这里是10进制
s2=s1+buffer;
丁淇石头 2003-08-06
  • 打赏
  • 举报
回复
1、CString s2; s2.Format("%d", i); s1 += s2;
2、汉字由两部分组成,且两部分的ASCII值都小于0;
3、用Find函数
tigerfox 2003-08-06
  • 打赏
  • 举报
回复
不好意思下班了。明天的吧。
tigerfox 2003-08-06
  • 打赏
  • 举报
回复
你给我发的消息收到了。这个问题不是很难。如果你搞不定,可参考我的:

tigerfox 2003-08-06
  • 打赏
  • 举报
回复
修改如下:

3 CString strText(a我sdf啊asd") ,strDest("啊");
int nPos = 1;
for ( int i=0; i<strText.GetLength() ; nPos++,i++ )
{
if ( ((BYTE)strText[i])>0x80 ) // sorry这行,我忘记了,汉字处理最好用字节数组
{
if( (strDest[0]==strText[i]) && (strDest[1]==strText[i+1]) )
{
break;
}
i++;
}
}
yokel 2003-08-06
  • 打赏
  • 举报
回复
To tigerfox(风之力:=初级程序员.奋斗.被开发中)
第三个小问题的程序有点问题,总是返回12

其实我的最终目的是分析字符串获得其中英文单词及其偏移值,若字符串中出现非英文字母如汉字,偏移值只能加一。
比如:
CString strResource="This。我is,a'全dog."
想得到以下结果
CString[] word元素 : This is a dog
CString[] Pos元素 :0 6 9 12
yokel 2003-08-06
  • 打赏
  • 举报
回复
试试先,
关于第三个问题,主要是想得到变量中的非英文字母(不确定)的偏移值,
HanZhu1 2003-08-06
  • 打赏
  • 举报
回复
1、
int i=100;
CString s2,s1="abc
s2.Format("%d", i);
s1 += s2;
2、汉字由两个字节组成,每个字节的值都小于0;

3、用find找这个汉字就可以了
blackblue 2003-08-06
  • 打赏
  • 举报
回复
要想“a我sdf啊asd”中“啊”的位置为6,应该用这一字符串转换为Unicode编码方式,并使用相应的宽字符查找函数wcsstr。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧