std::ofstream + binary, ate



  • hi - fällt euch an den 2 zeilen hier iwas seltsames auf:

    const std::string path("X:/tmp.dat");
    
    std::ofstream stream( path.c_str(), std::ios_base::binary | std::ios_base::in | std::ios_base::ate );
    

    OS ist Windows (wegen der Pfadangabe evtl wichtig) und er kann die Datei nicht öffnen - egal, ob sie schon existiert oder er sie erst noch erstellen muss...
    Falls ich irgendetwas so falsch machen sollte, dass ihr nicht erkennt, was ich machen möchte:
    ich möchte binär( binary ) in( in ) die Datei xyz schreiben - und wenn die Datei schon existiert, soll nur was rangehangen werden( ate ).

    Hab ich da irgend nen Denkfehler drin?
    So bald ich ate weglasse, funktioniert es immer - wenn ich es so lasse, funktioniert es nur manchmal(kein Muster zu erkennen und ich habs auch nich iwie reproduzieren können, der Fehler liegt aber 100%ig in diesen Zeilen)
    Evtl weiß ja auch wer, wie ich rausbekommen kann, warum er die datei nich erstellen/öffnen konnte?!

    bb


  • Administrator

    Wäre die korrekte Angabe für den openmode nicht eher:

    std::ofstream stream( path.c_str(), std::ios_base::binary | std::ios_base::out | std::ios_base::app );
    

    out für das Schreiben ( in ist nämlich lesen) und app für append ( ate setzt nur die Position auf das Ende).
    http://www.cplusplus.com/reference/iostream/ofstream/ofstream/

    Grüssli



  • Ty 🤡


Anmelden zum Antworten