ofstream/fstream erstellt keine Datei



  • folgenden Code:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    	ofstream file;
    	file.open("test.txt");
    	file << "test";
    	file.close();
    	return 0;
    }
    

    Ich nutze geany auf Linux Mint und erhalte einfach keine Datei ­čś×
    und ja, ich habe bereits alles durchsucht.
    Vielleicht gibt es noch weitere Fehlerquellen? Ich verstehe nicht, warum keine test.txt-Datei vorhanden ist, nach dem kompilieren.



  • gruenhintermOhr schrieb:

    Ich verstehe nicht, warum keine test.txt-Datei vorhanden ist, nach dem kompilieren.

    Nach dem Kompilieren oder nach dem Laufenlassen? Das Kompilieren erzeugt nur das Programm. Um die test.txt zu erzeugen, muss das Programm auch laufen.


  • Mod

    Das kann viele Ursachen haben. Ein paar Ideen, was schief gegangen sein k├Ânnte:

    • Du hast das mit dem "Ich verstehe nicht, warum keine test.txt-Datei vorhanden ist, nach dem kompilieren." wirklich ernst gemeint, anstatt dass es nur schlampige Ausdrucksweise ist: Kompilieren ist nicht Ausf├╝hren!
    • Du guckst am falschen Ort nach der Datei. Da du einen relativen Pfad benutzt, wird dieser relativ zum aktuellen Arbeitsverzeichnis aufgel├Âst. Das aktuelle Arbeitsverzeichnis ist vielleicht nicht das, was du denkst. Es ist nicht unbedingt das Verzeichnis, in dem die Executable liegt. Oder auch nicht unbedingt dein Homeverzeichnis. Oder auch nicht unbedingt das Verzeichnis, von dem aus du eine eventuelle Entwicklungsumgebung ge├Âffnet hast.
    • Deinem Programm fehlen die Rechte, an dem gew├╝nschten Ort die Datei anzulegen. Vielleicht weil dieser Ort eben ein anderer ist, als du dachtest, siehe mein vorheriger Punkt. Oder weil du nicht an diese M├Âglichkeit gedacht hast. In dem Fall w├╝rden all die IO-Operationen stillschweigend fehlschlagen. Da du nirgendwo pr├╝fst, ob die Datei auch wirklich offen ist, kann man das beim Ausf├╝hren deines Programms nicht bemerken.

    Mach doch mal eine Pr├╝fung rein, ob die Datei ge├Âffnet wurde. So kannst du meinen dritten Punkt pr├╝fen. Wenn sie ge├Âffnet wurde, dann existiert sie auch garantiert irgendwo. Die einfachste M├Âglichkeit, wie du innerhalb deines Programms mal schnell das aktuelle Arbeitsverzeichnis ausgeben kannst, w├Ąre wohl ein system("pwd"); .



  • Vielen Dank!!!

    ja, ich meinte w├Ârtlich nach dem Kompilieren! ­čśâ
    Ich fasse nicht, wie doof ich manchmal bin... nach dem Ausf├╝hren ist die Datei nun auch da und im richtigen Ordner.

    Wirklich gro├čen Dank, hab den Wald vor lauter B├Ąumen nicht gesehen. ^^


Log in to reply