| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2020 人关注过本帖
标题:求高手能帮忙指点一下关于CString字符串的分割函数
只看楼主 加入收藏
jiangkecai
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-11-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求高手能帮忙指点一下关于CString字符串的分割函数
我在编写的一个程序中,有个问题就是按照逗号分割出来的字符串比较时有问题;

比如说如下定义:
CString str=_T("A,X1,1.359,1")//为要分割的字符串
CString s=_T("x1");
而将分割后的字符串放在一个动态数组中
CString* strTmp=new CString[MAX];
比如说将分割的出来的"x1"放在strTmp[1]里
可是将s与strTmp[1]进行比较时就有问题了

我做了个小测试:
bool flag=s==strTmp[1];
flag总是显示FALSE;
求高手指点呀!!!!!
本人的字符串分割函数代码如下:

CString * SplitString(CString str,char split,int &iSubStrs)
{
    int iPos=0;
    iSubStrs=1;
    for(iPos=str.Find(split);iPos!=-1;iPos=str.Find(split,iPos+1))
    {
        iSubStrs++;
    }
    CString *pstrString=new CString[iSubStrs];
    int iTemp=0;
    for(int i=0;i<(iSubStrs-1);i++)
    {
        iPos=str.Find(split,iPos+1);
        pstrString[i]=str.Mid(iTemp,iPos-iTemp);
        iTemp=iPos+1;
    }
    pstrString[(iSubStrs-1)]=str.Mid(iTemp,str.GetLength()-iTemp);
    return pstrString;
}
搜索更多相关主题的帖子: 分割 测试 字符串 动态 
2012-04-25 23:13
jiangkecai
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-11-13
收藏
得分:0 
怎么没人回复呀,急求高手指点呀!!!先谢过咯!!
2012-04-25 23:33
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:20 
当初我也遇到字串切割的问题~
可是以前不会用CString~
所以用C写了个"类似"VB6的Split字符串的功能~

程序代码:
//------------------------------------------------------------------------------------------------------------------//
int spritcount(char *strIn, const char *aaa)//计算字串中有多少分割符号
{
    int a = 0;
    unsigned int i=0;

    for(i=0; i<strlen(strIn); i++)
    {
        if (strIn[i] == aaa[0])
            a++;
    }
    return(a+1);    //符号数量+1=段落
}
//------------------------------------------------------------------------------------------------------------------//
int strSprit(char *strIn, char **strOut, const char *delim, int nSpritCount)
{
    char *temp;
    int j=0;
    temp = strtok(strIn, delim);
    while( j < nSpritCount )
    {
        strOut[j] = temp;
        j++;
        temp = strtok(NULL, delim);
    }
    return 0;
}


程序代码:
...
    Title = spritcount(CodeString, delim1);            //依delim1分段落
    strSprit(CodeString, part, delim1, Title);            //第一次分割(part[0],part[1])

    Paragraph = spritcount(part[1], delim2);            //依delim2分段落
    strSprit(part[1], part1, delim2, Paragraph);        //第二次分割(part[0]....part[Paragraph])
...


顺便帮你顶一下~

不要選我當版主
2012-04-26 10:11
jiangkecai
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-11-13
收藏
得分:0 
回复 3楼 wube
谢啦!这个问题是解决了,但还有些东西不是很清楚!用CString类中的Trim()函数可以解决这个问题,s.Trim()==strTemp[1].Trim();
但是对为什么这样还是不清楚,还希望有高手指教一下
2012-04-26 12:49
yuyouchun
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-9-9
收藏
得分:0 
路过
2012-05-02 18:06
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
程序代码:
char *Trim(char *src)//等同VB6的Trim()
{
     int i = 0;
     char *begin = src;
     while(src[i]!='\0')
    {
    if(src[i]!=' ')
        break;
    else
        begin++;
        i++;
     }
     for(i=strlen(src)-1;i>=0;i--)
    {
    if(src[i]!= ' ')
        break;
    else
        src[i]='\0';
     }
     return begin;
}

不要選我當版主
2012-05-02 19:45
快速回复:求高手能帮忙指点一下关于CString字符串的分割函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025812 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved