neue Zeile bei Eintrag in Datei ?



  • Wenn ich die eingabe von dem Benutzer in eine Datei speichern will, wird in der Datei immer ein und die selbe Zeile überschrieben also die erste. Was muss ich machen damit jede Eingabe in eine neue Zeile geschrieben wird ?
    i ist die Eingabe des Benutzers.

    #include <iostream.h>
    #include <fstream.h>

    using namespace std;

    int main()

    {
    char* i ;
    cout<<"Geben sie was ein: ";
    cin>>i;

    ofstream File("text.txt");
    cout.rdbuf(File.rdbuf());
    cout<<i<<endl;
    };



  • Du musst die Datei im Append-Modus öffnen. Es sollte einen zweiten Konstruktor für ofstream geben, der als 2'ten Parameter besondere Flags akzeptiert.



  • Außerdem darfst du der Funktion cin keinen undefinierten Zeiger übergeben. Mach entweder ein statisches Array draus oder lege mit 'new' einen Buffer auf dem Heap an.



  • Sorry aber ich bin voll der Anfänger. Könnt ihr mir mal posten wie das dann aussehen könnte ? Dann versteh ich es vieleicht besser.



  • Hmm, hatte zwei Rechtschreibfehler in meinem vorletzten Beitrag. Es sollte Append-Modus statt Appen-Modus heißen (engl. append = anhängen).

    Ich hab dir schnell einen Code geschrieben, der dein Problem in reinem C++ lösen sollte. Ich garantiere natürlich nicht für Fehlerlosigkeit, daher wäre es nett wenn jemand anderer noch ein Auge darauf werfen würde, und eventuell auf Fehler aufmerksam machen würde.

    Es folgt der Code:

    #include <iostream.h> 
    #include <fstream.h> 
    #include <string>
    
    using namespace std; 
    
    int main() 
    
    { 
    string input; 
    cout<<"Geben sie was ein: "; 
    getline(cin, input, '\n'); //User etwas eingeben lassen
    
    ofstream File("text.txt", ios::app); //speziellen Flag angeben
    //cout.rdbuf(File.rdbuf()); 
    //cout<<i<<endl; 
    File<<input<<endl;
    };
    


  • Kann mir das auch noch jemand verständlich erklären ?



  • Was ist 'n' ???

    Was ist ein flag ?



  • Schmollegg schrieb:

    Was ist 'n' ???

    getline(cin, input, '\n');

    Das bedeutet, dass eine Eingabe von Stream cin (i.d.R. Tastatur) gelesen wird und in der Variable input gespeichert. Es wird so lange gelesen, bis das Zeichen \n auftritt, was new line bedeutet und bei der Eingabe einem Drücken auf Enter oder Return entspricht.

    Schmollegg schrieb:

    Was ist ein flag ?

    ofstream File("text.txt", ios::app);

    ios::app ist ein sogenanntes Flag, eine Variable mit einem bestimmten Wert. app ist eine statische Variable der Klasse ios.
    Wenn dies im ofstream als Option angegeben wird, werden die Daten am Ende der Datei text.txt angehängt.


Anmelden zum Antworten