In Datei nach einem String suchen und die Zeile ausgeben



  • Hi,
    Ich hab ein kleines Problem:
    Ich möchte einen String in eine Datei schreiben, dahinter dann noch eine Nummer
    z.B: "john 123"
    und dann soll das Programm, wenn der Benutzer "john" eingibt, die Datei nach Einträgen mit "john" durchsuchen und diesen Eintrag dann ausgeben
    Hier mal mein Quellcode:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	// Ein String anlegen
    	string Name;
    	// ihn erfragen
    	cout << " Name: " << endl;
    	cin >> Name;
    	cout << Name << "Wird in txt Datei geschrieben!" << endl;
    
    	// String in Datei schreiben
    	fstream Datei;
    		Datei.open("TestDatei.test", ios::out);
    	Datei << Name;
    	Datei.close();
    
            cout << "----------Ab hier wird eingelesen!---------" << endl;
    
    	// String aus Datei lesen
    	ifstream File;
    	File.open("TestDatei.test");
    	string buffer;
            getline(File,buffer);
            cout << buffer << endl;
            File.close();
            cin.get();  
            return 0;  
    // Die Erklärungen sind noch vom Probieren des Schreibens/Lesens von Dateien 
    // also bitte nicht wundern!  
    }
    

    Ziel ist ein kleines Telefonbuch, wo der Benutzer einen Namen eingibt, das Programm nach diesen Namen sucht und wenn vorhanden, die Telefonnummer des Eintrages ausgibt!
    Ich wüsste leider nicht wie ich Name + Telefonnummer so abspeichern soll das sie zueinander gehören...wenn jem. ne Idee hat wäre ich sehr dankbar!

    Ich hoffe ihr könnt/wollt mir helfen
    mfg,
    Lerikson



    {
    	ifstream File;
    	File.open("TestDatei.test");
    	string name;
             string nummer;
             while(getline(File,name,';' and getline(File,nummer))
             {
                if(name==suchname)
                   cout<<"Nummer:"<<nummer<<'\n';
             }
        }
    

    Dateiformat:

    Hans;+49-161-654789
    Monika;235689
    Sybille;06669-65236
    


  • Lerikson schrieb:

    Ich wüsste leider nicht wie ich Name + Telefonnummer so abspeichern soll das sie zueinander gehören...wenn jem. ne Idee hat wäre ich sehr dankbar!

    Ich hoffe ihr könnt/wollt mir helfen
    mfg,
    Lerikson

    Hi!
    Name und Telefonnummer in eine Struktur packen, z.B..
    Gruß,
    w.



  • vielen Dank für eure Hilfe, ich werds gleich mal ausprobieren, meld mich dann (morgen) wieder!



  • sorry für doppelpost aber:

    dieser Quellcode führt zu nachstehenden Fehlern:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	// Ein String anlegen
    	string Suchname;
    	// ihn erfragen
    	cout << " Welchen Eintrag suchen sie (Name): " << endl;
    	cin >> Suchname;
    
    	// String aus Datei lesen
    	ifstream File;
    	File.open("TestDatei.test");
    	string name;
        string nummer;
    	while(getline(File,name,';' and getline(File,nummer)))
    	{
    		if(name==suchname)
    		{
    			cout << suchname": " << nummer << endl; 
    		}
    	}
    	File.close();
    
    	system("pause");
    	return 0;
    
    }
    

    Da ich die Befehle getline und and nicht kenne (bisher nie verwendet habe) bin ich in diesem Punkt wieder auf euch angewiesen, hier die Fehler:

    1>------ Erstellen gestartet: Projekt: Dateien, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>main.cpp
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(20) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'and'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(20) : error C2065: 'and': nichtdeklarierter Bezeichner
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(20) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getline'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(20) : error C2059: Syntaxfehler: ')'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(20) : error C2059: Syntaxfehler: ')'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(21) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(22) : error C2065: 'suchname': nichtdeklarierter Bezeichner
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2065: 'suchname': nichtdeklarierter Bezeichner
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Zeichenfolge'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::basic_string<_Elem,_Traits,_Alloc> &)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\string(537): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,unsigned char)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(930): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const unsigned char *)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(923): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,signed char)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(916): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const signed char *)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(909): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,_Elem)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(871): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const _Elem *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(825): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,char)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(785): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const char *)": template-Argument für "std::basic_ostream<char,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(738): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,char)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(700): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2784: "std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "const char [3]" hergeleitet werden.
    1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(653): Siehe Deklaration von 'std::operator <<'
    1>c:\users\lenny\documents\visual studio 2008\projects\dateien\dateien\main.cpp(24) : error C2677: Binärer Operator '<<': Es konnte kein globaler Operator gefunden werden, der den Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)
    1>Das Buildprotokoll wurde unter "file://c:\Users\Lenny\Documents\Visual Studio 2008\Projects\Dateien\Dateien\Debug\BuildLog.htm" gespeichert.
    1>Dateien - 21 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



  • bei getline fehlt ne klammer. und statt and muß man anscheinend && schreiben.

    while(getline(File,name,';') && getline(File,nummer))
                               ^
                               |
    


  • Danke!
    Neben diesem Fehler hatte ich auch einen mit cout fabriziert...:(
    nochmals Danke für eure (deine) Hilfe!



  • Lerikson schrieb:

    Danke!
    Neben diesem Fehler hatte ich auch einen mit cout fabriziert...:(
    nochmals Danke für eure (deine) Hilfe!

    Hast du den Fehler inzwischen gelöst?

    cout << suchname": " << nummer << endl;
    

    << vergessen, Suchname ist nicht suchname (Groß/Kleinschreibung beachten)

    cout << Suchname << ": " << nummer << endl;
    

    Bei weiteren Fehlern bitte aktuellen Quellcode posten und auch die Fehlermeldung(en).


Anmelden zum Antworten