Textdatei lesen



  • Kann mir jemand sagen wie ich sachen aus einer Textdatei lesen kann in in einem string, int, oder char speichern kann? hab jetzt zum speichern:

    cin.get(Buffer, 500);
      ofstream File("info.txt");
      cout.rdbuf(File.rdbuf());
    

    kann mir jemand sagen wie ich das wieder lesen kann?



  • ofstream File("beispiel.txt");
    if(File)
    {
        char zeile[200];
        File.getline(zeile,200,';');
    }
    

    Die Parameter von getline:
    1. Wohin soll kopiert werden?
    2. Wie viele Zeichen sollen maximal kopiert werden?
    3. Alles, was hinter dem Zeichen vom dritten Parameter kommt, wird nicht mehr kopiert. Standardeinstellung ist '\n', er kann also auch weggelassen werden.



  • Wie kann ich damit mehrere Einträge einlesen, sprich
    in c hab ich das so gemacht:

    fscanf(f_ptr," %s %s %s\n",name, vorname, beruf);
    

    Ich komm in c++ nicht drauf, wie stell ich das um?



  • Arg ich verzweifel zu Hülf:

    while(!List.eof())
    			{
    			List.getline(vorname, 80,  ',');
    			List.getline(name, 80, ',');
    			List.getline(alter, 80, ',');
    			List.getline(telefonnummer, 80, ',');
    			cout<<vorname<<"\n";
    			cout<<name<<"\n";
    			cout<<alter<<"\n";				   cout<<telefonnummer<<"\n";
    
    			AddPerson(vorname, name, alter, telefonnummer);
    			cout<<"------------\n";
    			}
    

    So gehts obwohl ich nicht rall wieso alles in die richtige char variable kommt. Auf jeden Fall sehe ich ja durch meine Testausgabe das er die variablen richtig füllt und diese will ich nun in die Funktion übergeben.

    Das klappt auch und selbst in der Funktion sind die Variablen noch ok aber bei der ausgabe gibts dann nur noch kauderwelsch.

    Ist das Auslesen jetzt so in ordnung?!



  • Kann mir denn niemand helfen? Hier ein Beispiel:

    in der txt steht:

    Hans Peter 19 0421/9318

    Wie kann ich das wieder einlesen?!
    Ich denke mit dem getline geht etwas schief denn wenn ich die daten meiner funktion übergebe kommt nur mist raus.

    Ist irgend jemand so nett und hilft mir?



  • Hans Peter 19 0421/9318

    wenn alles strings sein sollen bis auf die 19 (int) ,kannst du es einfach so machen:

    ifstream file("blub.txt");
    string vorname;
    file>>vorname;
    string name;
    file>>name;
    int alter;
    file>>alter;
    string tel;
    file>>tel;
    
    //fertisch
    


  • Hmm ist das so richtig?

    void ReadList()
    {
    	char vorname[80], name[80], alter[80], telefonnummer[80];
    	ifstream List("List.txt");
    	if(List)
    		{
    			// Solange das Ende der Liste nicht erreicht ist weiter hinzufügen
    			while(!List.eof())
    				{
    				List.getline(vorname, 80,  ' ');
    				List.getline(name, 80, ' ');
    				List.getline(alter, 80, ' ');
    				List.getline(telefonnummer, 80 );
    
    				AddPerson(vorname, name, alter, telefonnummer);
    
    				cout<<"------------\n";
    				ReadPerson();
    				}
    			List.close();
    			cout<<"Liste erfolgreich eingelesen!\n";
    		}
    	else
    		cout<<"Datei konnte nicht eingelesen werden!\n";
    }
    

    Das Merkwürdige ist wenn ich ReadPerson gleich hier aufrufe wird alles korrekt und richtig angezeigt.

    Rufe ich danach in der main() wieder ReadPerson() auf gibts nur
    Müll, auch wenn ich in meiner verketteten Liste springe usw, also die Liste scheint erstellt zu werden und er liest richtig ein nur bei der Ausgabe gibts Müll, das verstehe ich nicht.

    void ReadPerson()
    {
    	if(personavaiable)
    	{
    	 cout<<pCurrentPerson->vorname<<"\n";
    	 cout<<pCurrentPerson->name<<"\n";
    	 cout<<pCurrentPerson->alter<<"\n";
    	 cout<<pCurrentPerson->telefonnummer<<"\n";
    	}
    }
    

    😕 😕


Log in to reply