In Textdatei schreiben, auslesen



  • hi ich habe ein programm mit dem ich mit fout.... etwas in eine textdatei schreibe.

    nun habe ich das problem wenn ich das programm erneut öffne und wieder etwas hineinschreiben will überschreibt es den vorherigen eintrag....

    wie mache ich dass die textdatei bei9behalten wird und nur eine zeile hinzugefügt wird?

    2.) wie lese ich so eine textdatei aus und zeige sie dann aus zeilenweise in meiner win32 konsole?



  • Öhm probiers mal eher nicht mit fout sonder sieh dich mal nach ifstream und ofstream um, damit lässt sich besser lesen und schreiben. Desweiteren beim öffne ein ios::app mit dazuschreiben

    FALS WIR UNS HIER IN C++ befinden 😃



  • hm ok jetzt bin ich durcheinander mom schau mal bitte hier so les ich die daten ein:

    ofstream file("speicher.txt"); 
    file << name1 << " " << name2 << "  " << vorwahl << "/" << nummer << endl; 
    
    cout << "Gespeichert";
    

    so schreibe ich meine variablen die man eingibt in die textdatei "speicher.txt"

    nun wenn ich jetzt was weiteres einspeichern will überscheibt es meine bisherige eingabe,

    und dann würd ich halt noch gern wissen wie ich die textdatei also den inhalt der datei in meine c++ konsole bekomme?

    gruß



  • ofstream file;
    file.open("speicher.txt",ios::app);
    file << name1 << " " << name2 << "  " << vorwahl << "/" << nummer << endl;
    
    cout << "Gespeichert";
    

    somit solltest du das fortlaufende speichern hinbekommen.
    um es wieder auszugeben, musst du die datei zeilenweise einlesen und dann ausgeben 😉



  • hast du mir da einen beispiel code oder so?

    das erste funt perfekt... danke.

    aber beim einlesen kann ich mir gar nicht vorstellen wie das aussehen soll...

    gruß



  • kurzer Sprechcode 😃

    -Öffne die Datei im Lesenden Modus
    -Lies solange, solange etwas in den Lesestrom eingelesen werden kann
    -lies aber Zeilenweise wenn du das möchtest
    -gib das auf der Konsole mit dem Standardausgabeformat aus

    joa jetzt musst du nur noch im zusammenhang mit den Dicken wörtern googlen und dir Code zusammenbasteln 😉



  • ifstream datei("speicher.txt");
       if( !datei ) throw "Fehler beim Öffnen!";
       string text;
       datei >> text;
       cout<<text;
       datei.close();
    

    irgendwas stimmt da nicht,
    er sagt mir string is undecleared obwohl ich string included habe,

    datei is undecleared und text......

    ich peil jetzt nichts mehr



  • #include<iostream>
    #include<fstream>
    #include<string>
    
    int main()
    {
      std::ifstream file;
      file.open("speichern.txt");
      std::string gelesen;
    
      while(file>>gelesen)
      {
         std::cout<<gelesen<<std::endl;
      }
    
    return 0;
    }
    

    UNGETESTET



  • ok ich bekomm schon mal keine fehlermeldungen mehr aber er zeigt mir nichts an in der konsole,

    nur schwarz



  • #include<iostream>
    #include<fstream>
    #include<string>
    
    int main()
    {
      std::ifstream file;
      file.open("speichern.txt");
      std::string gelesen;
    
      while(file>>gelesen)
      {
         std::cout<<gelesen<<std::endl;
      }
    file.close();
    return 0;
    }
    

    so SOLLTE es gehen 😃



  • ich dank dir aber es funktioniert so auch nicht... hab auch schon weiter gegoogelt aber ich find nichts.

    falls es wichtig ist:

    jede zeile der datei ist gleich aufgebaut:

    vorname name vorwahl/rufnummer

    aer ich glaub das ist nicht so wichtig oder?

    gruß



  • bei mir geht es einwandfrei 🙂



  • ok hier nochmal der ganze code der funktion:

    #include "header.h"
    #include <fstream>
    #include <string>
    
    using namespace std;
    void telefonbuch()
    {
    
         system("cls");
         cout<<"Telefonbuch"<<endl;
    
         cout<<"____________________________________________________________"<<endl<<endl;
         cout<<"Folgende Eintraege gefunden: "<<endl<<endl;
    
      std::ifstream file; 
      file.open("speichern.txt"); 
      std::string gelesen; 
    
      while(file>>gelesen) 
      { 
         std::cout<<gelesen<<std::endl; 
      } 
    file.close(); 
    
         getchar();
         getchar();
         system("cls");
         main();
         }
    

    siehst du irgendwo einen fehler?
    gruß



  • ah ok hab mein fehler gefunden....

    funktioniert perfekt...
    aber momentan wird es nun so ausgegeben:

    Vorname
    Name
    Vorwahl/Rufnummer
    Vorname
    Name
    Vorwahl/Rufnummer
    .
    .
    .
    .
    irgendwie eine idee zur besseren formatierung?



  • ja mach in der while folgendes

    while(getline(file,gelesen)
    

Anmelden zum Antworten