c ++ IF (bool == true) снова запускает код - PullRequest
0 голосов
/ 12 мая 2018

Все, кого я действительно ценю, все читают и помогают мне понять код.Сначала я хотел бы сказать, пожалуйста, не понижайте этот пост, потому что какое-то время я получаю пониженное голосование без какой-либо причины, и я рискую быть заблокированным.

Мой вопрос заключается в том, как вы видите в моем главномфункция, которая у меня есть LoginMenu.cpp файл, который позволяет пользователю войти в учетную запись.Когда функция меню запущена, пользователь спрашивает, хочет ли он создать учетную запись или войти в систему.Если они говорят логин, они передаются функции toLogin, которая является логическим значением.Если они успешно вводят пароль, то toLogin возвращает true.Но когда я запускаю приведенный ниже код, я пытаюсь проверить, равно ли toLogin true или false, если это правда, тогда я даю им доступ к меню приложения.Но проблема в том, что когда я набираю if(obj1.toLogin()==true), он снова запускает эту функцию.Но я только хочу увидеть, правда это или нет.Пожалуйста, помогите :) Спасибо всем.

     int main()
      {


           system("Color A");
           LoginMenu obj1;
           //obj1.menuu();
           if(obj1.toLogin()==true)
               {
                  menu();
               }
      return 0
      }

ОБНОВЛЕНИЕ: функция toLogin.

bool LoginMenu::toLogin()
{
string userCheck, userChecktxt;
cout << "What is your username: \n>";
getline(cin, userCheck);
userChecktxt= userCheck + ".txt";
fstream file(userChecktxt.c_str(), ios::in );
if (file.fail()) {

    cerr << "Username not found!" << endl;
    cout << "Retry again." <<endl;
    Sleep(800);
    system("CLS");
    menuu();
                 }


string passwordcheck;
string lineus, lineps;
while(!file.eof())
{
    file>> lineus;
    if(lineus.c_str()==userCheck)
    {
        found =true;

    }
}
if(found==false)
{
            cout << "ERROR: Username not found!" <<endl;
            menuu();
}
file.close();
fstream ifile(userChecktxt.c_str(), ios::in );
cout <<"Enter Password: " <<endl;
cout <<">" ;
getline(cin,passwordcheck);
 while(!ifile.eof())
{
    ifile>> lineps;
    if(lineps.c_str()==passwordcheck)
    {
        passfound=true;
        cout << "Password is correct! Access is granted!\n";
        Sleep(1000);
       break;
    }
}

 if(passfound==false)
{
    cout << "Password is incorrect. [Tip:If you forgot the password, register a new account. Data will be lost.]";
    Sleep(3000);
    system("CLS");
    menuu();



}
 return true;
 }

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Сохранить результат toLogin в переменную. Я предполагаю, что проблема в том, чтобы снова запустить toLogin в функции меню.

bool loggedOn = obj1.toLogin();
if (loggedOn) {
    ...
}

// somewhere else
if (loggedOn) {
    ...
}

Также, boolean == true бесполезен, потому что возвращает тот же логический. Точно так же, boolean == false точно так же, как !boolean «не булево», которое легче воспринимать как инвертирующую функцию.

0 голосов
/ 12 мая 2018

Я думаю, что если вы просто сделаете

    if(obj1.toLogin())

добьется цели, попробуйте и дайте нам знать!

...