Letzter Buchstabe doppelt



  • Oder einfach in der Konsole/Bash ausführen, dann sieht man das Ergebnis auch ohne irgendwelche Skripte und kann argv für Debugzwecke etc. nutzen. 🙂



  • Gibt es eine möglichkeit die Datei nur einmal zu öffnen und sowohl Daten auszugeben und einzulesen?

    f.open("daten.txt", ios::out | ios::in);
        f << "Text geht rein!";
    
        while(f.get(Buchstabe))
        {
            Buchstaben.push_back(Buchstabe);
            cout << Buchstabe;
        }
        f.close();
    

    Wird auch ausgeführt, Compiler gibt also keine Fehlermeldungen. Allerdings wird der Text nicht ausgegeben.



  • cout musst du flushen, sonst schreibt der erst wenn der Puffer voll ist ... siehe doku 🙂 std::endl; flush't implizit.



  • padreigh schrieb:

    cout musst du flushen, sonst schreibt der erst wenn der Puffer voll ist ... siehe doku 🙂 std::endl; flush't implizit.

    Danke, funktioniert nun! ( << flush) Wieso ist das nur nötig, wenn ich die Zugriffstypen mit "|" verbinde?



  • 🙂 schrieb:

    ... wenn ich die Zugriffstypen mit "|" verbinde?

    std::cout != f .. oder was meinst du?



  • padreigh schrieb:

    std::cout != f .. oder was meinst du?

    Verstehe selber meine Frage von gestern nicht mehr so recht. 🙄
    Habe mir die Doku von flush angeschaut. Allerdings verstehe ich doch nicht so recht, wie ich sie bei mir im Code anzuwenden habe. Also an f.get.

    Sobald ich "flushe" wird der Text gedruckt, richtig?
    Flushe ich dann mit:

    cout << flush;
    

    Oder mit:

    flush(f)
    

    Vorallem wo soll ich flushen?

    grüße,
    🙂



  • cout<<flush;



  • f.open("daten.txt", ios::out | ios::in);
            f << "Text geht rein!";
    
            while(f.get(Buchstabe))
            {
                cout<<flush;
                Buchstaben.push_back(Buchstabe);
                cout << Buchstabe;
            }
        f.close();
    

    Compiler meckert nicht, Text wird aber dennoch nicht ausgegeben.


  • Mod

    edit: Quatsch. Vorgeschichte des Threads nicht beachtet.

    edit2: So, Erstmal den Thread gelesen 😃 . So geht das:

    fstream f;
      char Buchstabe;
      f.open("daten.txt", ios::out);  // Lege Datei an, falls sie nicht existiert.
      f.close();                      // Denn ansonsten könnte man sie nicht zum Lesen öffnen
    
      f.open("daten.txt", ios::out | ios::in);  // Dies geht jetzt nicht mehr schief.
      f<<"Text geht raus";
      f.seekg(0);                     // Setze Lesezeiger auf den Anfang
      while(f.get(Buchstabe))
        {
          cout << Buchstabe;
        }
      f.close();
    


  • f.open("daten.txt", ios::out | ios::in);
            f << "Text geht rein!";
    
            while(f.get(Buchstabe))
            { 
                Buchstaben.push_back(Buchstabe);
                cout << Buchstabe << flush;
            }
        f.close();
    

    Versuch so 🙂



  • f.seekg(0);                     // Setze Lesezeiger auf den Anfang
    

    Ich sollte mein Cpp-Buch etwas genauer lesen... hatte aber auch nicht daran gedacht, dass der Zeiger am Ende ist. (Obwohl er das nach dem Schreiben nur sein kann).


Anmelden zum Antworten