getline ???



  • Moin in die Runde,
    eine Frage zu "getline" !
    Ich möchte gerne einen Text in der Konsole schreiben mit mehreren Sätzen!
    Das Problem ist nur, wenn ich Enter-Taste drücke für einen Absatz schließt sich die Konsole und das soll so nicht sein^^ !
    Das ganze soll dauerhaft gespeichert werde via <fstream> !

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;

    int main()
    {
    string inhalt;
    fstream f;
    f.open("Daten.txt", ios::app);
    getline(cin, inhalt);
    f << inhalt;
    f.close();
    }

    Ich hoffe ihr wisst was ich meine 🙂
    Danke schonmal für die Hilfe und großes Lob an die Betreiber der Seite und die tolle Community 👍🏻


  • Mod

    Du könntest den Schritt mit dem Lesen und Schreiben der Zeilen mehrmals wiederholen.

    PS: Häh? Das ist doch quasi das gleiche wie in deinem Code von vor einem Jahr! Und da (zumindest beim Rückweg) hattest du es schon mit der Wiederholung!



  • Ja, das Problem vom letzten mal ist gelöst!
    Nur jetzt weiß ich nicht weiter!
    Gibt es eine Möglichkeit um Absätze direkt in der Konsole einzugeben ohne das sie sich schließt?

    PS: Das ist keine Hausaufgabe oder ähnliches, ich mache das aus reinem Interesse und Hobby 😀



  • Du brauchst eine Schleife mit einer Abbruchbedingung. Wenn irgendwas öfter als ein Mal gemacht werden soll musst du steuern, wie oft das gemacht werden soll. Oder wann aufgehört werden soll, das zu machen.
    Was genau ist bei dir ein Absatz? Darf ein Absatz Zeilenumbrüche enthalten?



  • An eine Schleife habe ich auch schon gedacht!
    Aber gibt es nicht ein Befehl den man z.B hinten am getline anhängen kann der das dann automatisch macht?
    Wenn ich im Word etwas schreibe:
    Zeile 1.... "Enter-Taste"
    Zeile 2 .... "Enter-Taste"
    Zeile 3 .... usw..

    Das meine ich mit Absatz!
    Wenn ich in der Konsole etwas schreibe:
    Zeile 1 ....."Enter-Taste"
    "Konsole schließt sich" Programm beendet!
    Ich möchte aber gerne in der Konsole eine Zeile schreiben und dann in der nächsten Zeile weiter schreiben!

    Ich kenne mich noch nicht so gut aus in C++


  • Mod

    Du kannst theoretisch ein andere Abbruchzeichen für getline angeben anstatt dem Zeilenumbruch. Wirklich sinnvoll ist das hier nicht, denn ein Absatz ist ja definiert durch das zweimalige Eingeben des Zeilenumbruchs, nicht durch ein konkretes Zeichen.

    Ansonsten: Nein, getline macht keine automatischen Schleifen. Willkommen in der Welt der low-level Programmierung von C++. Hier machen wir alles von grundauf selber statt fetter, vorgefertigter Funktionen. Wobei du mir aber noch die Sprache zeigen müsstest, wo eine Zeilenlesefunktion automatisch eine Schleife macht (Woher soll die den Code in der Schleife kennen?). So etwas habe ich noch nirgendwo gesehen.



  • Ja dann probier das doch mal mit ner Schleife. Das Anhängen passiert automatisch beim Schreiben in die Datei, darum musst du dich nicht kümmern, weil du die Datei ja zum Anhängen geöffnet hast. Das Flag std::ios::ate kann auch nicht schaden, das könnteste du noch ergänzen.

    Dein Vorgehen könnte so aussehen:

    1. Datei zum Anhängen öffnen
    2. Zeile von der Konsole einlesen
    3. Falls Zeile nicht leer: Zeile in Datei schreiben, weiter bei 2)
    4. fertig


  • Naja es hätte ja sein können das ich z.B eine bestimmte Bibliothek einbinden kann
    die schon fertige Funktionen für so etwas enthalten!
    Ich versuche es mal mit einer Schleife!

    Danke euch 👍🏻



  • Im übrigen empfiehlt es sich, Konsolenprogramme aus der Konsole aufzurufen, dann schließt die sich auch nicht bei Programmende.



  • @FOKUS Schön dich wiederzusehen!

    Kannst du bitte noch einmal genau im Detail beschrieben, wie die Eingabe vonstattengehen soll? Ich werde aus deiner bisherigen Beschreibung noch nicht so richtig schlau.

    Also, die Eingabe mehrerer Zeilen soll möglich sein, aber wann ist ein Abbruchkriterium erreicht, bzw. wann soll dein Programm das Eingegebene verarbeiten?



  • @Fragender ,
    moin moin!
    Ich möchte gerne etwas in einem string schreiben mit getline!
    In der Konsole möchte ich gerne einen Zeilenumbruch machen mit der Enter-Taste,
    ohne das sich die Konsole dabei schliest!

    hoffe das ist verständlicher! 🙂



  • @FOKUS sagte in getline ???:

    @Fragender ,
    moin moin!
    Ich möchte gerne etwas in einem string schreiben mit getline!
    In der Konsole möchte ich gerne einen Zeilenumbruch machen mit der Enter-Taste,
    ohne das sich die Konsole dabei schliest!

    hoffe das ist verständlicher! 🙂

    Nochmal: SCHLEIFE!



  • JA! VERSTANDEN!!!


  • Mod

    Dieser Beitrag wurde gelöscht!


  • @Columbo sagte in getline ???:

    Dieser Beitrag wurde gelöscht!

    Was soll das denn? 🤨


Anmelden zum Antworten