2015-01-28 4 views
0

В моем текстовом файле («UsernamePassword.txt») имеется несколько строк имен пользователей и паролей. Когда я попытался войти в систему, используя имя пользователя и пароль во второй строке или третьей строке, это приведет меня к части «неправильное имя пользователя или пароль». Работает только первая строка имени пользователя и пароля.Как читать несколько текстовых строк

Любое предложение о том, как читать несколько строк?

{ 
    fstream inFile; 
    string user, pass, username, password; 
    int choice; 
    Logo(); 
    cout << endl << endl << endl; 
    inFile.open("UsernamePassword.txt"); 
    if (!inFile) 
     cout << "Unable to Open File"; 
    else 
    {  
     while (username != user) 
     cout << endl << endl << endl; 
     cout << "    Please enter username: "; 
     cin >> user; 
     cout << "    Please enter password: "; 
     cin >> pass; 
     { 
      inFile >> username >> password; 

      if (user == username && pass == password) 
      { 
       system("cls"); 
       cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl; 
       cout << "\t   ****************************************** " << endl; 
       cout << "\t   ** !!! Welcome to CherryLunch !!! ** " << endl; 
       cout << "\t   ****************************************** " << endl; 
       cout<<endl<<endl<<endl<<endl<<endl; 
       system("pause"); 
       system("cls"); 

       MainMenu(); 

      } 
      else 
      {   
       cout<<endl<<endl<<endl<<endl<<endl; 
       cout << "\t    !!! Invalid Username or Password !!!" << endl<<endl; 
       cout << "\t     *** Please try again ***" << endl; 
       cout<<endl<<endl<<endl<<endl<<endl; 

       system("pause"); 
       system("cls"); 
      } 
     } 
    } 
    inFile.close(); 
} 
+2

Вы положили свое заявление на неправильную строку? Также покажите фрагмент вашего текстового файла. – David

+0

переместите 'while (имя пользователя! = Пользователь)' одна строка ниже 'cin >> pass;' Я думаю, что это, вероятно, то, что вы намеревались сделать. Это не единственное, что неправильно. –

+0

Это еще один симптом тех же ошибок кодирования, что и в [ваш другой вопрос здесь] (http://stackoverflow.com/questions/28185382/how-to-stop-a-while-loop). Хорошие ответы также применимы и здесь. –

ответ

0

Вы не дали нам весь код - но я поместил комментарии в коде (различные местах), чтобы указать, хотите ли вы сделать это добровольно или сделал это по ошибке:

{ 
fstream inFile; 
string user, pass, username, password; 
int choice; 
Logo(); 
cout << endl << endl << endl; 
inFile.open("UsernamePassword.txt"); 
if (!inFile) 
    cout << "Unable to Open File"; 
else 
{  
    while (username != user) // Only the following run will repeat (if this is the intention?) 
    cout << endl << endl << endl; 
    cout << "    Please enter username: "; 
    cin >> user; 
    cout << "    Please enter password: "; 
    cin >> pass; 
    { // This is scoped operation 
     inFile >> username >> password; 

     if (user == username && pass == password) 
     { 

      system("cls"); 
      cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl; 
      cout << "\t   ****************************************** " << endl; 
      cout << "\t   ** !!! Welcome to CherryLunch !!! ** " << endl; 
      cout << "\t   ****************************************** " << endl; 
      cout<<endl<<endl<<endl<<endl<<endl; 
      system("pause"); 
      system("cls"); 

      MainMenu(); 

     } 
     else 
     {   
      cout<<endl<<endl<<endl<<endl<<endl; 
      cout << "\t    !!! Invalid Username or Password !!!" << endl<<endl; 
      cout << "\t     *** Please try again ***" << endl; 
      cout<<endl<<endl<<endl<<endl<<endl; 

      system("pause"); 
      system("cls"); 
     } // End of inner else 
    } // This is the end of scoped operation 
} // End of Outer else 
inFile.close(); 
Смежные вопросы