Variable (long) in Datei schreiben (Binär)..



  • Hallo,

    ich möchte im Programm eine Datei erzeugen (Binär) und diese mit diversen Daten füllen. Die Datei gibt es noch nicht und muss neu erstellt werden.. Probleme bekomme ich, wenn ich die Variable type vom Typ long in die Datei schreiben möchte.

    Hier die Stelle:

    // ..
    
                long type = 11;
    
                fstream fileStream(fileName.c_str(), ios::out | ios::binary);
    
                if(fileStream.is_open()) {
                    fileStream.write("a", sizeof(char));
                    // Hier der Fehler:
                    fileStream.write((long*)&type, sizeof(type));
    
                    // ..
    

    Hier die Fehlermeldung:

    error C2664: 'std::basic_ostream<_Elem,_Traits>::write' : cannot convert parameter 1 from 'long *__w64 ' to 'const char *'
    

    Kann mir da mal jemand einen Tipp geben? finde irgendwie nichts passendes in meinen Büchern bzw. im Netz?!

    Besten Dank und schönen Gruß
    Christian



  • Chris... schrieb:

    // Hier der Fehler:
    fileStream.write((long*)&type, sizeof(type));
    // Besser:
    fileStream.write((char*)&type, sizeof(long));
    

    Denn write schreibt Bytes (und der einzige Datentyp der immer genau 1 Byte lang ist ist in C(++) char), und in diesem Fall genau vier davon (auf 32-Bit Systemen).

    sizeof(type) hinten geht natürlich auch, wird aber bei Zeigern auf Arrays schnell mal falsch angewendet.



  • Ach Mensch, hab ich nicht gesehen.. Danke für die schnelle Hilfe!
    Schönen Gruß,
    Christian


Anmelden zum Antworten