Migration auf C++ (Zeiger & fopen)



  • Ich habe es mit fstream probiert. Das Problem ist, die Zuweisung auf den Zeiger. Das klappt mit C++ anscheinend nicht.



  • Original erstellt von <klaus>:
    Ich habe es mit fstream probiert. Das Problem ist, die Zuweisung auf den Zeiger. Das klappt mit C++ anscheinend nicht.

    Aloha!

    Also wenn du weiterhin FILE* benutzt kann das nicht klappen. ifstream ist ein eigenständiges Objekt das mit FILE nichst zu tun hat. (Bitte korrigieren wenn ich falsch liege :))

    Du musst bei ifstream wie folgt vorgehen:

    ifstream *FileObj;
    FileObj = new ifstream("C:\\deinedatei.txt");
    

    Das sollte eigentlich funktionieren.



  • Hallo PuppetMaster,

    folgende Fehlermeldung gibt's für deinen Vorschlag.

    -> type `FILE' is not a base type for type `ifstream'

    So geht es also schon mal nicht (...im Übrigen ".dat" !...also ios::binary).

    Trotzdem Dank.



  • Original erstellt von <klaus>:
    **Hallo PuppetMaster,

    folgende Fehlermeldung gibt's für deinen Vorschlag.

    -> type `FILE' is not a base type for type `ifstream'

    Trotzdem Dank.**

    Hi!
    Ich glaub du hast nicht richtig geselen. FILE geht nicht mit ifstream!!! darum sieh dir noch mal den code von mir an. das ist schon richtig was ich geschrieben hab 😉

    dein FileObj ist nicht vom Typ FILE sondern vom Typ ifstream

    [ Dieser Beitrag wurde am 09.05.2003 um 12:13 Uhr von PuppetMaster2k editiert. ]



  • wenn du kein c/c++ mix haben willst was hat da noch 'FILE' zu suchen?



  • Verstehe ich nicht ???? Anhängend einige Code-Zeilen aus meinem Programm. Da funktioniert's.

    FILE fileobj; ...
    fstream FILE("c:\\meineListe.dat",ios::out|ios::binary);...
    FILE.write((const char
    )&adresse, sizeof(adresse));...
    fileobj = fopen("c:\\meineListe.dat","rb");...
    zeiger = ftell(fileobj);...
    nmax = zeiger/sizeof(adr);...
    FILE.clear();...
    FILE.close();...



  • tachjen!

    Hier mal der Code wie du machhen solltestm, wenn du nur c++ haben willst!

    char text[101] = "";
    
    //brauch nicht unbedingt ein Pointer zu sein, datei wird automatische geöffnet
    //allerdings nur zum einlesen.
    ifstream fileobj("c:\\meineListe.dat",ios::in|ios::binary); 
    
    //dateien schließen
    fileobj.close();
    

    Ich hoffe das war jetzt verständlicher 😃

    P.S. das nächste mal die Code-Tags verwenden 😉



  • Vielen Dank. Das ist schon O.K., aber das ist nicht mein Problem.

    Ich möchte im weiteren Verlauf mit einem Pointer arbeiten, der den File repräsentiert. Natürlich gibt es für den kreativen Programmierer unendliche Möglichkeiten das auch anders zu machen. Das möchte ich aber gar nicht wissen.

    Meine Frage, ob ich einem Pointer in C++ ähnlich wie in C (sh. fopen) einsetzen kann (und vor allem, wie ?) bleibt nach wie vor unbeantwortet.

    Gruß



  • PuppetMaster2k hat dir schon die lösung gezeigt, nur ist das dann kein FILE* sindern ein ifstream*



  • Etwas spät. Trotzdem noch Dank für die Anregung und Hilfe. Resultat: Nix mehr Migration, jetzt komplett Neu (C++).


Anmelden zum Antworten