ofstream gibt nichts aus, warum nur?
-
Hi,
probiers mal mit fout.flush(), bevor du die Datei schließt. Das leert die Puffer und schreibt alles sich noch in den Puffern befindliche in die Datei.
Eigentlich hatte ich aber auch gedacht, dass das bei close() automatisch gemacht wird...Mfg, smasher1985
-
smasher1985 schrieb:
Hi,
probiers mal mit fout.flush(), bevor du die Datei schließt. Das leert die Puffer und schreibt alles sich noch in den Puffern befindliche in die Datei.
Eigentlich hatte ich aber auch gedacht, dass das bei close() automatisch gemacht wird...Mfg, smasher1985
Hab es probiert: Keine Veränderungen, nichts wird ausgegeben.
Kann es vielleicht irgendwie sein, dass das Ganze in irgendeinen anderen ofstream verebbt? Kann mir das zwar selber auch nicht denken, aber vielleicht hatte mal jemand dasselbe Problem?
-
Das Öffnen der Datei schlägt wahrscheinlich schon fehl. Das passiert im Zweifel dann, wenn die Datei schreibgeschützt ist oder wenn gerade ein anderes Programm darauf zugreift.
-
Nehmen wir an, das wäre so:
(a) wie kann ich das nochmal mit ofstream rausfinden?
(b) Und warum stürzt das Programm beim Zugreifen nicht ab?
-
Hi,
habe etwas nachgebohrt, mit
fout.rdstate()
kann man sich anscheinend Status-Infos holen. Diese Funktion gibt gleich nach dem Öffnen in diesem Programm "badbit" zurück, was alle anderen Programme, in denen ich ofstream verwende, nicht der Fall ist.
badbit:
to record a loss of integrity of the stream buffer
Ist das soweit korrekt, also: Stellt man so einen Fehler im Stream fest? Oder ist es nur Zufall bzw. was ganz anderes, rdstate() zu verwenden?
Und wenn dies aussagekräftig wäre, wie kann es dazu kommen?
Ich meine: Eigentlich will ich ja nur das Projekt weiterentwickeln. Aber egal, ob ich alle Dateien kopiere und in ein anderes Projekt an einer ganz anderen Festplattenposition kopiere, es bringt alles nichts, anscheinend will irgendjemand, dass es nicht geht.
-
Vielleicht wäre es mal günstig Exceptions abzufangen.
Dazu muss man wahrscheinlich den ofstream so instellen: fout.exceptions(ios_base::badbit | ios_base::failbit);Dann kannst du sie mit try und catch abfangen.
Gruß Christian
-
Probier mal
ofstream fout("Protokoll.txt"); if (fout) { fout << "irgendwas"; fout.close(); }
In den else-zweig kannst du ja dann eine Fehlerausgabe oder so einbauen...
Mfg, smasher1985
-
Ja, smasher1985, du hast schon recht. fout ist tatsächlich NULL. Und so kann ich den Fehler behandeln.
----- ABER ------
Warum klappt es nicht??? Speicher voll? Festplatte kaputt? Was kann ich tun?
Auch nach Neustart und auf meinem Laptop besteht das Problem weiterhin. Und wie gesagt, wenn ich in dieselbe Datei mit einer der anderen Main-Funktionen etwas schreibe, dann klappt alles.
Name ändern, Endung weglassen, Verzeichnis wechseln, alles hat keinen Effekt. Das ist schon extrem seltsam
-
Kling irgendwie als wenn dein dein Program keine schreib Rechte besitzt : Betriebsystem?
-
Windows 2000.