Wie sähen diese zeilen in C++ aus?



  • Hi,

    ich bin anfänger in sachen fstreams, aber /me will lernen 🙂

    In einem programm hab ich sowas hier stehen an verschiedenen stellen:

    fread( &modelheader, 1, sizeof(modelheader), modelfile );
    // [...]
    fread( g_skins, 1, modelheader.num_skins * MAX_SKINNAME, modelfile );
    // [...]
    fread( base_st, 1, modelheader.num_st * sizeof(base_st[0]), modelfile );
    // usw...
    

    nun jetzt frage ich mich, wie diese 3 zeilen mit fstreams aussehen würden? 😕

    Schon mal dickes danke im voraus.



  • modelfile.read(reinterpret_cast<char*>(&modelheader), sizeof modelheader);
    modelfile.read(reinterpret_cast<char*>(g_skins), modelheader.num_skins * MAX_SKINNAME);
    modelfile.read(reinterpret_cast<char*>(base_st), modelheader.num_st * sizeof base_st[0]);
    

    (falls irgendwelche dieser Pointer zufällig bereits char* sein sollten entfällt der Cast natürlich)



  • hi,
    danke, nee das ist kein char* sondern eine structur die aus ner Datei geladen werden soll 🙂



  • ⚠ binäres speichern von strukturen in Dateien ist keine gute Idee, da der Compiler die binäre Representation der Struktur nach belieben ändern kann, zB. fügt er hier Paddingbytes ein und sobald du einen anderen Compiler nimmst oder eine andere Compiler Option, kannst du die binär gespeichert Daten nicht mehr laden!



  • also wenn das so ist dann codet John Carmack mist, denn diese zeilen hab ich aus dem Quake 2 sourcecode vom MD2 loader 😃 😃



  • Stimmt, John Carmack codet komisch. Bei ihm kommts aber auch nicht auf Portabilität an.



  • Naja bei mir aber schon *hihi*


Anmelden zum Antworten