c++ - 如果条件,代码不正确执行代码

标签 c++ mfc

此代码从对话框中获取一个字符串,并将其与列表中的数据进行比较,如果成功,则设置选择列表中的元素。 我遇到的问题是 if,如果我只搜索第一个元素它会工作,如果我尝试搜索任何其他元素,它只会忽略 if 条件并一直走到列表的末尾。

void CMFC1Dlg::OnBnClickedButton6()
{ 
    CString variable;
    cautare.GetWindowTextA(variable);
    variable = variable.MakeLower(); 

    if(variable!="")
    {
        list<Contact*>::iterator seek;
        bool flag = TRUE;
        int i = 0 ;
        while(flag)
        {
             seek = agenda.first_element();

                if( ((CString)((*seek)->getLastName().c_str())).MakeLower() == variable  || 
                    ((CString)((*seek)->getFirstName().c_str())).MakeLower() == variable || 
                    ((CString)((*seek)->getFirstAndLastName().c_str())).MakeLower() == variable ||
                    ((CString)((*seek)->getLastAndFirstName().c_str())).MakeLower() == variable)
                {
                    contactsVariable.SetCurSel(i);
                    this->OnLbnSelchangeList1();
                    flag=FALSE;
                }

                advance(seek,i);
                i++;
                if (i == agenda.list_size())
                {
                    flag = FALSE;
                }

        }
    }
    else
        MessageBox("No text on input ", "Error", MB_ICONERROR | MB_OK);

    cautare.SetFocus();
    cautare.SetWindowTextA("");
}

最佳答案

您在 while 循环的每次迭代开始时设置 seek = agenda.first_element();。将该语句移出循环,它应该可以工作。

编辑:您还需要将搜索调用更改为仅搜索 1,而不是 i,因为您不再丢弃之前搜索的结果。

关于c++ - 如果条件,代码不正确执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061780/

相关文章:

c++ - 尝试使用 time.h 库计算两个日期之间的差异

c++ - 如何在模板类函数中分配结构值?

c++ - 在 MFC 中使用发送消息最小化和恢复窗口

c++ - 了解 CStatic 和 CWnd 以及消息路由

c++ - 错误 : LNK2019: unresolved external symbol "extern "C"

c++ - 在 MFC/Visual C++ 中覆盖 OnCancel 按钮

c++ - fatal error LNK1136 : invalid or corrupt file

c++ - 我可以注释多行宏吗?

c++ - 错误 : '_mm_prefetch' was not declared in this scope

c++ - 指向线程的指针