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.


  • Global Moderator

    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. ^^