do while循环忽略我的bool标志变量c ++

时间:2017-03-30 12:47:44

标签: c++ infinite-loop do-while

如果userList [i] .CheckUser(用户名,密码)返回false,则它进入else条件,我得到输出“User Does Not Exist!再试一次输入用户名和密码”该行然后陷入无限循环我无法弄清楚为什么,我的意思是程序再次进入do-while循环,所以我不知道循环会如何延续?

int main()
{   
    LoadUsersFromDatabase();
    bool flag;
    string username;
    int password;
do{
    cout << "Enter username and password: ";
    cin >> username >> password;
    for (int i = 0; i < numOfUsers; i++)
        if (userList[i].CheckUser(username, password) == true)
        {
            if (userList[i].GetUserType() == 'A')
            {
                ProcessAssistantMenu();
            }
            else if (userList[i].GetUserType() == 'M')
            {
                ProcessManagerMenu();
            }
        }
        else
                cout << "\rUser Does Not Exist! Try Again! ";
                flag = false;
  } while(flag == false);
return 0;
}

2 个答案:

答案 0 :(得分:4)

您始终设置flag = false

我猜你想要这样做:

else{
    cout << "\rUser Does Not Exist! Try Again! ";
    flag = false;
}

正如亚历克斯指出的那样,你首先没有设置true

答案 1 :(得分:2)

循环中永远不会设置标记true