Mit std::fstream neue Datei erstellen?



  • Gibt es ein Flag, welches ich im Konstruktor von std::fstream angeben kann, um direkt eine neue Datei zu erstellen, wenn noch keine mit dem angegebenen Namen exestiert? Im Moment muss ich dafür immer noch CreateFile verwenden und vorher überprüfen, ob der Stream gültig ist. Ist mir ehrlich gesagt zu aufwendig 😉
    Danke schonmal!


  • Mod

    Nimm einen ofstream, da ist das die Standardeinstellung. Ansonsten:
    ios::out
    ios::out | ios::trunc (ist das gleiche wie nur ios::out)
    ios::out | ios::app
    ios::out | ios::trunc | ios::in
    ios::out | ios::app | ios::in
    Alle noch kombinierbar mit ios::binary und ios::ate. Und beachte natürlich, dass diese Modi alle etwas unterschiedliches machen (außer die ersten beiden) und du besser wissen solltest, was genau sie tun.



  • std::ofstream("DateiName.txt");
    

    Dürfte funktionieren.



  • Danke. Mit std::fstream funktioniert es nämlich nicht, mit std::ofstream schon.


  • Mod

    Ich bin Matrix... schrieb:

    Danke. Mit std::fstream funktioniert es nämlich nicht, mit std::ofstream schon.

    Das liegt da dran, dass bei fstream der Defaultparameter ios::in | ios::out ist, welcher, wie du siehst, nicht in meiner Liste vorkommt.



  • Das liegt daran, dass eine Datei, die möglicherweise zum Lesen verwendet wird, nicht erstellt wird, sondern als vorhanden behandelt wird. Es geht nähmlich auch mit fstream:

    std::fstream("HAHAH.txt", std::ios::out);
    

    Hier wird nur zum Schreiben geöffnet, also wird die Datei angelegt falls sie noch nicht existiert. 😉 🕶

    Edit: SeppJ war schneller. 😃



  • Hacker schrieb:

    Edit: SeppJ war schneller. 😃

    wow - nur 3 eidts gebraucht um das zu merken 👍



  • unskilled schrieb:

    Hacker schrieb:

    Edit: SeppJ war schneller. 😃

    wow - nur 3 eidts gebraucht um das zu merken 👍

    Was sind eidts ? 😕



  • DrakoXP schrieb:

    unskilled schrieb:

    Hacker schrieb:

    Edit: SeppJ war schneller. 😃

    wow - nur 3 eidts gebraucht um das zu merken 👍

    Was sind eidts ? 😕

    edits~~



  • unskilled schrieb:

    Hacker schrieb:

    Edit: SeppJ war schneller. 😃

    wow - nur 3 eidts gebraucht um das zu merken 👍

    Das liegt an einem Bug. Als ich auf "Nachricht Anschauen" geklickt hab', wurde SeppJ's Post überhaupt nicht aufgelistet - obwohl ich knapp fünf Minuten zu spät war(!). Die zwei Edits danach waren wegen Rechtschreibfehlern (und in Eile).


Anmelden zum Antworten