Letzter Buchstabe doppelt
-
schrieb:Hab mir die Methode von 'dumb' angewöhnt. Find ich besser, ist aber glaube ich vom Geschmack abhängig.
Ist auch besser. Noch eleganter finde ich aber ein einfaches
cin.get();.
-
Man kann auch sein Programm einfach über ein kleines Batchfile starten, wo im Batchfile dann nach
MyApp.exenoch einpausedrinsteht.
Dadurch muss man seinen Code nicht mit Test-Artefakten "verunreinigen".
-
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.
-
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 AnfangIch 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).