| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:CString比较的问题
只看楼主 加入收藏
E_ver
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-11-14
结帖率:100%
收藏
已结贴  问题点数:12 回复次数:3 
CString比较的问题
程序代码:
CString Str="哈哈";
CString m_Array="哈哈";




for(k=0;k++)
{
    for(m=0;m++)
    {
      int a=(m_Array);

 
    }
    for(n=0;n++)
    {
        int b=(m_Array);

    }
}
代码大概就是这么个样子,简单的写下;
问题是:假如当k=0时a==0,b=0;
        但是当k=1后a==-1,b==0;
很奇怪的现象。
一样的语句在同一个函数里面比较一样的值却会出现不同的结果。
2013-04-08 11:08
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:12 
上完整代码吧,这样说人家也不知道你原始代码是不是和这个有逻辑的差别

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-04-08 12:08
E_ver
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-11-14
收藏
得分:0 
回复 2楼 yuccn
Speech.h
程序代码:
int strLength;
CString m_ArrayStr[100];
CString m_RArrayStr[100];
Speech.cpp

Speech.cpp
程序代码:
void CSpeech::SelectWords(CString Str)
{
     strLength=8;
    for (int x=0;x<100;x++)        //确保执行前数组为空、没有多余项
    {
        m_ArrayStr[x]="";
        m_RArrayStr[x]="";
    }
    _RecordsetPtr m_Record=NULL;
    CString Str_Zpart="";
    CString Str_Rpart="";
    _bstr_t vWord="";
    CString _Str=Str;
    CString _RStr=Str;
    linksql.OnInit();
    m_Record=GetRecord(Str);   //获取结果集的函数
   
    CString m_ArrayRecord[500]={};
    int Rlen=0;
    while (!m_Record->adoEOF)    //为加快查询速度、把结果集转化为数组
    {
        vWord=m_Record->GetCollect("词语");
        CString str=vWord;
        m_ArrayRecord[Rlen]=str;
        m_Record->MoveNext();
        Rlen++;
    }
    linksql.ExitConnection();



//子循环1
    int num=0;
    for(int m=strLength;m>0;m-=2 )
    {
        Str_Rpart=_RStr.Right(m);
        int n=0;
        while(m_ArrayRecord[n]!="")
        {
            if (Str_(m_ArrayRecord[n])==0)
            {
                m_RArrayStr[num]=Str_Rpart;
                _RStr.Delete(_RStr.GetLength()-m,m);
                if (_RStr.GetLength()>8)
                {
                    m=8+2;
                }
                else
                {
                    m=_RStr.GetLength()+2;
                }
                num++;
                break;
            }
            n++;
        }
    }



//子循环2
      int key=0;
        for (int i=strLength;i>0;i-=2)
        {       
            Str_Zpart=_Str.Left(i);
            int j=0;
            while (m_ArrayRecord[j]!="")
            {
                int a=Str_(m_ArrayRecord[j]);//程序出错处
                  if (a==0)
                {   

                    m_ArrayStr[key]=Str_Zpart
                    _Str.Delete(0,i);
                    if (_Str.GetLength()>8)
                    {   
                        i=8+2;
                    }
                    else
                    {
                        i=_Str.GetLength()+2;
                    }
                    key++;
                    break;
                }
                j++;
            }

        }
}


CExeDlg.cpp
程序代码:
CSpeech Sp;
CString Str_array[100];

void CExeDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    int sum=0;

    while(Str_array[sum]!="")
    {
        Sp.SelectWords(Str_array[sum]);
    }
}

当sum=0时无异常;
当sum=1开始,子循环2的Str_(m_ArrayRecord[j])语句开始异常,即使正确的语句都返会-1;
而子循环1无任何异常

[ 本帖最后由 E_ver 于 2013-4-8 14:25 编辑 ]
2013-04-08 14:21
E_ver
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-11-14
收藏
得分:0 
回复 2楼 yuccn
最新调试结果发现、在这种情况下是
Str_(Array[])
执行无效果。
当我把这一子循环拿到另一函数中时又会
Str_Zpart=str.Left(i);
这一语句执行无效果。
ps:总之就是会出现某一语句在不定的情况下你打断点调试显示该语句执行到了。但没有得到该语句执行到该有的结果。
如:Compare()返回应有的值,str.left()没有返回应截取的字符串。。
很奇怪的现象,求版主解答。

2013-04-10 09:32
快速回复:CString比较的问题
数据加载中...
 
   



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

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