程序跳过while循环

Program skipping a while loop

本文关键字:循环 while 程序      更新时间:2023-10-16

我目前有问题与我的循环。该程序首先要求用户输入他的用户名和密码,然后进入一个循环,其中它将输入的用户名和密码与数据库中的数据进行比较。但是程序只是跳过while循环,继续执行下一条语句。

下面是我的代码:
string user,pass,access,power , euser, epass;
char ast=' ';
int aste = 0;
ifstream account;
account.open("Account.txt");
cout<<"Username: ";cin.ignore();getline(cin,euser);
for(int i=0;i<euser.length();i++)
{
    euser[i] = toupper(euser[i]);
}
cout<<"Password: ";
do
{
ast = getch();
if (ast == 13)
{
    break;
}
if(epass.size() < 10)
{
     if(ast != 8)
    {
        cout<<"*";
        epass+=ast;
        aste ++;
    }
    else if(ast == 8 && epass.size() > 0)
    {
        cout<<"b b";
        epass.erase(epass.size()-1);
    }
}
else if(epass.size() == 10)
{
    if(ast == 8 && epass.size() > 0)
    {
        cout<<"b b";
        epass.erase(epass.size()-1);
    }
    else
    {
        cout<<"";
    }
}
}while(ast!=13);

while(account>>user>>pass>>access>>power) // problem loop
{
    cout<<"hi"<<endl;
    if(euser==user && epass==pass)
    {
        system("cls");
        cout<<"Welcome "<<power<<" "<<user;
        break;
    }
    else
    {
        cout<<"nnIncorrect username or password. Try again";
        break;
    }
    system("pause");
}
account.close();
system("pause");

将代码分解,以便于调试和查看发生了什么:

account >> user;
cout << "user:" << user;
account >> pass;
cout << "pass:" << pass;
account >> access;
cout << "access:" << access;
account >> power;
cout << "power:" << power;
bool b = (bool) account;
while(b)
{
    cout<<"hi"<<endl;
    if(euser==user && epass==pass)
    {
        system("cls");
        cout<<"Welcome "<<power<<" "<<user;
        break;
    }
    else
    {
        cout<<"nnIncorrect username or password. Try again";
        break;
    }
    system("pause");
    account >> user;
    cout << "user:" << user;
    account >> pass;
    cout << "pass:" << pass;
    account >> access;
    cout << "access:" << access;
    account >> power;
    cout << "power:" << power;
    b = (bool) account;
}

注意,我并不是说这是很好的代码,只是说它可以帮助你看到发生了什么,并解决你的问题。