fstream, Visual C++ .NET 2003
-
Hallo,
heute habe ich endlich mein Visual C++ bekommen und habe gleich losgelegt. Jetzt habe ich aber ein seltsames Problem:
Ich habe die folgende Funktion in einer Windows 32 - Anwendung (ohne MFC) benutzt. Rufe ich sie auf bekomme ich zwar als Rueckgabewert 0, aber die Datei wird nicht geschrieben. Benutzte ich die gleiche Funktion in einer Konsolenanwendung funktioniert es!?int LogZeileSchreiben2(const std::string &zeile) { // Initialisierung int ergebnis=0; try { // Datei oeffnen std::fstream datei("./log.log", std::ios_base::out|std::ios_base::app); // Zeile schreiben datei << zeile << '\n'; } catch(...) { ergebnis=1; } return ergebnis; }
Kennt jemand dieses Phänomen?
Gruß
void*
-
keine Ahnung, aber wie wärs mit nem close?
-
Auch keine Ahnung, aber wie wäre es mit ".\\log.log" statt "./log.log" ?
-
Hallo,
keine Ahnung, aber wie wärs mit nem close?
Kommt automatisch wenn das fstream Objekt abgeraeumt wird.
Auch keine Ahnung, aber wie wäre es mit ".\\log.log" statt "./log.log" ?
Das ist Jacke wie Hose.
Wie gesagt in der Konsole läuft es auch.
Trotzdem Danke!
Gruß
void*
-
Das ist Jacke wie Hose
sicher?
-
Noch eine Möglichkeit:
könnte sein, dass die Datei durch den relativen Pfad da erzeugt wird, wo du es eigentlich nicht erwartest. Evtl. im Temp-Ordner, im Windows-Ordner oder sonstwo. Kannst ja mal suchen, ob sie doch schon irgendwo ist.
-
das Problem kann nur an dem Datei-Pfad liegen
sonst würdest du keinen 0 return bekommen
die Datei kann zwar geschrieben werden aber halt nicht auf deiner Festplatte (also von deinem Dateisystem) angezeigt werden da ein flascher Pfad sicher verworfen wird
würd ich mal sagen, korrigiere mich bitte wenn ich falsch liege
-
void! Ich kann es jetzt nicht testen, bin auf Arbeit. Aber an dem Verzeichnis-Trenner könnte was dran sein. Kann ich mir auch nicht vorstellen, das es zwischen Konsolen- und Fenster-Anwendung einen Unterschied gibt. Aber man weiß ja nie.
Wenn du aber gaaaanz sicher gehen willst, dann solltest du dir mal die Boost-Library anschauen. Diese hat platform-unabhängige Filesystem-Klassen, welche direkt von fstream ableitet sind. Und diese konvertieren dir intern die Pfad-Angaben auf das jeweilige OS. Das benutze ich nämlich seit kurzem und dann muß ich mir um sowas keine Gedanken mehr machen.
-
Hallo,
erstmal Entschuldigung, dass ich solange nicht mehr reinschauen konnte.
sicher?
Ja, habe ich immer schon so gemacht, weil wir in meiner alten Firma Quellcode-Teile immer wiederverwendet haben und das auch zwischen Linux- und Windows-Projekten.
Aber ich werde nochmal beides Testen.Noch eine Möglichkeit:
könnte sein, dass die Datei durch den relativen Pfad da erzeugt wird, wo du es eigentlich nicht erwartest. Evtl. im Temp-Ordner, im Windows-Ordner oder sonstwo. Kannst ja mal suchen, ob sie doch schon irgendwo ist.Daran hatte ich auch gedacht und vorsorglich alle Laufwerke durchsucht. Fehlanzeige!
die Datei kann zwar geschrieben werden aber halt nicht auf deiner Festplatte
Wohin dann?
Aber an dem Verzeichnis-Trenner könnte was dran sein
Ich werde es nächste Woche, wie gesagt, noch mal alles durchprobieren und mich wieder melden!
Danke Euch schonmal!
Gruß
void*
-
Prüf mal nach dem erstellen des Objekte die Fehlerbits des fstream Objektes.