fstream problem: eingabe überprüfen in .txt datei



  • hi,

    Ich möchte (habe zwar schon rumprobiert aber irgendwie will des net klappen) ein programm schreiben, dass wenn ich zum beispiel "blabla123" eingebe, er überpüft ob diese Eingabe in der .txt datei vorhanden sind.

    Das soll auch mit anderen Eingaben funktionieren da in der .txt datei mehrere "Eingaben" vorhanden sind.

    Ich brauche keinen kompletten code nur wäre ein Ansatz gut^^
    Ich habe es mit ifstream probiert, aber ich weis nicht so richtig was ich für eine Bedingung reinschreiben soll.

    hoffe ihr könnt mir helfen.

    mfg
    oskar



  • Du liest die komplette Date in einen std::string ein und überprüfst dann mit der Funktion find(), ob sich deine Eingabe in der Datei bzw. jetzt im std::string befindet...

    ...
    std::string temp;
    ...
    if (temp.find("bla") != std::string::npos) {
    ...
    } else {
    ...
    }

    Falls dir das nicht weiterhilft solltest du das was du schon fertig hast hier posten und dein Problem weiter konkretisieren.



  • cout << "Benutzername: ";
     char Benutzername [1024];
     cin.getline (Benutzername, 1024);
    
                   fstream file;
                   std::string temp;
                   file.open ("Benutzer.txt", ios::in);
                   if (temp.find(Benutzername) != std::string::npos) 
                   {
                          cout << "Benutzer gefunden";
                          cin.get(); 
                   }
                   else
                   {
                          cout << "Benutzer nicht gefunden";
                          cin.get();
                   }
    

    Ich möchte jetzt dass er den Benutzer aus der liste der benutzer (Benutzer.txt) findet. Nur irgendwie funktioniert das was ich grad geschrieben hab nicht, er zeigt immer an das der benutzer nicht gefunden wurde.



  • Hmm also wenn keine Leerzeichen drin sind, reicht ein:

    #include <algorithm> // std::find
    #include <fstream> // std::ifstream
    #include <iterator> // std::istream_iterator
    #include <string> // std::string
    #include <iostream> // std::cin, std::cout, std::flush
    
    int main()
    {
        std::cout << "Wonach Suchen? " << std::flush;
        std::string value;
        std::cin >> value;
        std::ifstream file_stream("data.txt");
        const std::istream_iterator last(std::istream_iterator<std::string>());
        if (std::find(std::istream_iterator<std::string>(file_stream), last, value) != last) std::cout << "String gefunden!" << std::endl;
    }
    

    ...



  • cout << "Benutzername: ";
    char Benutzername [1024];
    cin.getline (Benutzername, 1024);
    
                   fstream file;
                   string temp;
                   file.open ("NeueBenutzer.txt", ios::in);
    
                   while (getline (file, temp))
                   {
                               if(temp.find(Benutzername) == 0) 
                               {
                                                  cout << "Benutzer gefunden";
                                                  cin.get();
                               }
                               else
                               {
                                                  cout << "Benutzer nicht gefunden";
                                                  cin.get();
                               }
                   }
    

    So ich hab des jetzt soweit. Es funktioniert aber er überprüft immer nur die erste zeile in der NeueBenutzer.txt wenn jetzt etwas in der 2 zeile steht findet er die nicht.
    irgendjemand eine idee?^^



  • cout << "Benutzername: ";
    string Benutzername
    getline (cin, Benutzername);
    
                   fstream file;
                   string temp;
                   file.open ("NeueBenutzer.txt", ios::in);
    
                   while (file>>temp)
                   {
                               if(Benutzername == temp)
                               {
                                                  cout << "Benutzer gefunden";
                                                  cin.get();
                               }
                               else
                               {
                                                  cout << "Benutzer nicht gefunden";
                                                  cin.get();
                               }
                   }
    

    und an deiner stelle würde ich dazu string benutzen anstatt char

    ist jetzt unegprüft, aber kannst es ja ma testen



  • gut ich habs jetzt soweit hab else weggelassen weil er es in while andauernd wiedrhohlt und deswegen dauernd rausgibt "benutzer nicht gefunden".

    danke für die hilfe^^


Anmelden zum Antworten