C++, Textdokument, Zeilenweise speichern



  • Gute Nacht,
    Mein Problem ist, das ich etwas in einem Textdokument speichern will, aber nicht irgendwie, sondern Zeilenweise.

    d.h. ich hab eine Variable die für die Zeile steht und eine sich ändernen Text.
    Beim erstenmal (Zeilen Variable auf 1) soll der entsprechende Text in der ersten Zeile gespeichert werden.
    Beim zweitenmal (Zeilen Variable auf 2) soll der entsprechende Text in der zweiten Zeile gespeichert werden.

    Ich hoffe ich bringe das halbwegs verständlich rüber 😕

    Freue mich über hilfreiche Antworten.
    (Ps ein Programm, welches Zeilenweise ausliest hab ich schon *duck*)



  • koen2 schrieb:

    Ich hoffe ich bringe das halbwegs verständlich rüber 😕

    Ehrlich gesagt: Nein.

    Allgemein: Schreiben kannst so ziemlich alles, indem du es per Ausgabe-Operator << in einen Stream schickst (Zahlen, Strings und ein paar weitere Typen unterstützt C++ von Haus aus, für den Rest kannst du den Operator überladen). Zeilenenden/wechsel erreichst du mit endl .



  • Neuer Versuch:

    Ich speicher etwas in ein Textdokument:

    fstream datei;
        datei.open("Daten\M1.txt", ios::out);
    string TEXT ;
    TEXT="BEISPIELTEXT" ;
        datei << TEXT << endl;
        datei.close();
    

    Jetzt will ich aber etwas !anderes! im selben Textdokument speichern, ohne, dass alles, was bisher im Textdokument steht, verloren geht.

    Deswegen will ich entsprechendes in einer !anderen! Zeile speichern, als alles was vorherstehend ist.

    Ich hoffe das ist verständlicher 😕



  • Wenn du die Datei mit ios::app öffnest, landen die nächsten Ausgaben am Ende der Datei (hinter dem, was bereits drin stand).

    PS: Du kannst das open() und close() auch weglassen - dazu gibst du beim Anlegen des fstreams den Namen und Modus an und der Destruktor schließt die Datei auch selbstständig.



  • CStoll schrieb:

    Wenn du die Datei mit ios::app öffnest, landen die nächsten Ausgaben am Ende der Datei (hinter dem, was bereits drin stand).

    Wenn ich mit ios::app öffne, speichert er gar nichts mehr ins TXT-Dokument



  • *Kopf-an-Wand-hau*

    fstream f;
        f.open("test.txt", ios::out|ios::app);
        f << 2333 << endl;
        f.close();
    

    (wie oben ists richtig :))

    hatte dafür kein ios::out mehr 😃
    VIELEN DANK DIR!, durch dich bin ich nun um einiges weiter, danke!!!



  • Wie gesagt: RAII macht close() für dich!



  • Oh man. Was ich mich frage: Wo kommt dieses verdammte Unwissen eigentlich her? Welcher Autor seiner C++ Bücher hat noch nie was von RAII gehört. Mir läuft hier jeden Tag einer über den Weg, der die Streams mit open und close vergewaltigt.
    Ich bin irgendwie dafür, dass wir als Community ein ordentliches C++ Tutorial schreiben, mit solchen Büchern bringt das nix...

    Also hier nochmal die Erklärung zu dem, was wir dir hier zu sagen versuchen, einen Stream verwendet man so:

    std::ifstream is("raii.ist.sexy"); // evtl auch noch als zweiten Parameter einen anderen Öffnungsmodus.
    // Einlesen
    // Schließen kann sich der Stream von selbst. Ja, das ist echte Zauberei, diese Destruktoren!
    

Log in to reply