Zum Inhalt springen

getline Ja nur wohin?


DeMon Toll

Empfohlene Beiträge

Moin zusammen,

ich muss gerade ein kleines Lagerverwaltungs Programm in C++ Schreiben. Im moment hänge ich bei der Benutzerkontrolle.

Hier die Situation:

Es soll beim Programmstart Überprüft werden ob die beiden Text Dateien (.txt) infoName.txt (Datei für Benutzer) und die Datei infoPW.txt (liste der Passwörter für die Benutzer). schon vorhanden sind oder nicht. Wenn nicht sollen Sie angelegt werden und dem User per Ausgabe mitgeteilt werden dasdieser Schritt erfolgreich beendet wurde (diese aktion funktioniert bereits ohne Probleme). Der Benutzer soll nun den Username und das Passwort eingeben. Die eingabe soll mit den Informationen aus den beiden .txt Dateien überprüft werden (hier happerts^^).

Problemdefinition:

Hier mal der QT Auszug:

     cout << "\nGeben Sie den Benutzernamen ein:";

               cout << "\n";

               cout << "<INPUT>";

               cin >> LoginNameUeb;                   // Eingabe desBenutzernamens

               cout << "Geben Sie das Passwort ein:";

               cout << "\n";

               cout << "<INPUT>";

               cin >> LoginPwUeb;                    // Eingabe des Passworts

               ifstream loginInfoName("infoName.txt"); // öffnen der Datei infoName.txt

               ifstream loginInfoPW ("infoPW.txt"); // öffnen der Datei infoPW.txt

               while (!loginInfoName.eof()){        //schleifendurchlauf solange loginInfoName nicht EOF

                     getline (loginInfoName,LoginNameUeb);           //Zeilenweises einlesen der Informationen aus infoName.txt          

                     while (!loginInfoPW.eof()){                     // schleifen durchlauf solange infoPW nicht EOF

                           getline (loginInfoPW, LoginPwUeb);        // Zeilenweise einlesen der Informationen aus infoPW.txt

                     }

               }

Das problem ist wie kann ich die eingelesenen zeilen in eine Variable schreiben und diese dann mit der eingabe überprüfen? Wäre super wenn ihr mir nen tipp geben könntet wie ich das anstelle^^.

so long

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

erst mal danke für deine antwort. Das mit der Variable stimmt natürlich den Auszug den ich hier gepostet habe war innerhalb meiner Ausprobier aktion^^. Ich habe einfach sämmtliche möglichkeiten ausprobiert^^. Eigentlich müsst es richtig heißen (zumindest so wies war):

getline (loginInfoName,LoginInfName);
und
getline (loginInfoPW,LoginInfPw);

ich weis die Namensgebung is bescheiden aber zu der zeit is mir nichts besseres eingefallen^^.

so long

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

ich habs endlich :). War im grunde ganz einfach^^. Danke an Klotzkopp für deine Hilfe, vor allem dein 1. Post hat mich auf die richtige Spur gebracht^^.

Achja die beiden while Schleifen hab ich ausseinander gebastelt^^.

Hier mal der QT für die leute die ein ähnliches Problem haben:

 while (!loginInfoName.eof()){        //schleifendurchlauf solange loginInfoName nicht EOF

                     getline (loginInfoName,LoginInfName);           //Zeilenweises einlesen der Informationen aus infoName.txt  

 }        

 while (!loginInfoPW.eof()){                     // schleifen durchlauf solange infoPW nicht EOF

                      getline (loginInfoPW,LoginInfPw);        // Zeilenweise einlesen der Informationen aus infoPW.txt      

 }

 if ((LoginNameUeb == LoginInfName) && (LoginPwUeb == LoginInfPw)){

                      cout << "Erfolgreich eingeloggt" << endl;                 

 } 

 else

                      cout << "Fehler beim Login" << endl;

grütze und ein schönes WE

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

So es funktioniert (getestet mit je 5 Zeilen pro Datei).

Hier der QT:

              while (!loginInfoName.eof()){        //schleifendurchlauf solange loginInfoName nicht EOF

                     getline (loginInfoName,LoginInfName);           //Zeilenweises einlesen der Informationen aus infoName.txt 

                     if (LoginInfName == LoginNameUeb){

                        cout << "Benutzernamen erfolgreich verifiziert" << endl;

                        break;                

                     }

                     else{

                     } 

               }    

               while (!loginInfoPW.eof()){                     // schleifen durchlauf solange infoPW nicht EOF

                     getline (loginInfoPW,LoginInfPw);        // Zeilenweise einlesen der Informationen aus infoPW.txt  

                     if (LoginInfPw == LoginPwUeb){

                        cout << "Passwort erfolgreich verifiziert" << endl;

                        break;

                     }  

                     else{

                     }

               }

               if ((LoginNameUeb == LoginInfName) && (LoginPwUeb == LoginInfPw)){

                                cout << "Erfolgreich eingeloggt" << endl;                 

               } 

               else{ // Fehler ausgabe bei nicht erfolgreichem Login

                   cout << "Fehler beim Login" << endl;

                   cout << "Versuchen Sie den Login erneut" << endl;

                   cout << "Sollte es dennoch probleme geben wenden Sie sich an" << endl;

                   cout << "ihren Systemadministrator." << endl;

                   cout << "Druecken sie eine beliebige Taste um fortzufahren" << endl;

                   cout << "\n\n<INPUT>";

                   getch();

                   goto LoginGoTo;

               }

               }

Ich weis is nicht gerade die sauberste Methode mit break aber es funktioniert^^.

so long

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt hast du aber wieder das Problem, dass jede Kombination aus Name und Passwort akzeptiert wird, auch wenn die gar nicht zusammengehören.

Muss das eigentlich sein, dass die Daten auf zwei Dateien verteilt sind? Das macht das ganze unnötig kompliziert.

Unsauber an dem Code ist übrigens nicht das break, sondern das goto. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich weis das goto hat die Eigenschaft einfache Quelltexte ruck zuck hunds kompliziert zu machen^^.

Zu den Benutzern bzw. den Passwörtern. Ich muss später noch eine Funktion einbauen die überprüft das jedes Passwort nur einmal vorkommt. Da ja noch die Funktion des User anlegens in innerhalb des Programms auch noch bestandteil ist. Zu den beiden Dateien....ja das war so vorgabe von meinem Cheffe^^. Da ich nich ganz so der Programmier Profi bin und mir ehrlich gesagt neue Themen in diesem bereich recht schwer fallen diese schnell zu lernen hat er sich ne Aufgabe ausgedacht die mich fordern soll^^. Naja was will man da machen ;).

Aber trotzdem mal thx für deine Hilfe ;), wobei ich so das leise gefühl habe ich werde in den nächsten Tagen mich noch 1 oder 2 mal hier melden müssen^^.

so long

DeMon

Bearbeitet von DeMon Toll
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...