std::fstream in klasse deklariert -> funktioniert nicht zur laufzeit



  • hi!

    class A
    {
     public:
              A();
              ~A();
              std::fstream filestream;
              void OpenAndWrite();
    };
              void A::OpenAndWrite()
              {
                   filestream.open("neu.txt", std::ios::out | std::ios::trunc);
                   filestream << "HALLO";
              }
    

    Wenn ich nun aber in main() die besagte Funktion aufrufe:

    A inst;
    A.OpenAndWrite();
    

    , so erstellt er mir zwar die datei "neu.txt", aber er schreibt nichts rein. wenn ich mit filestream.is_open() abfrage dann ergibt das 0. Wieso verdammt öffnet er die datei nicht dauerhaft? wenn ich innerhalb der funktion ein neues std::fstream deklariere und öffne etc dann funktioniert das. wieso aber kann er aber den nicht mit dem klassenmember arbeiten? HÖ?

    PS: auch wenn ich filestream als pointer anlege funktioniert es nicht (nur weil es ja hätte sein können dass open() zusätzlichen speicher benötigt wwi)

    HILFE! und danke im vorrraus
    chris90



  • 1. Muss

    A.OpenAndWrite();
    

    so heißen:

    inst.OpenAndWrite();
    

    2. Funktioniert es, wenn man das ändert bei mir.

    Felix



  • 3. bei so wenig Daten kann es sein, daß die im Schreibbuffer zurückgelassen werden, bis die Datei geflusht wird (das passiert durch f.flush(), f<<endl oder auch f.close() - von denen verwendest du keinen)


Anmelden zum Antworten