do while 循环忽略我的布尔标志变量 C++



If userList[i].用户查核(用户名,密码(返回false,然后它输入else条件,我得到输出"用户不存在!再试一次输入用户名和密码"那行然后卡在一个无限循环中,我不知道为什么,我的意思是程序再次重新进入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;
}

你总是在设置你的flag = false

我猜你想这样做:

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

正如亚历克斯指出的那样,你一开始就没有把它设置true

该标志永远不会在循环中true设置。

最新更新