Binarymode



  • hey,

    ich möchte binärdaten aus einer datei auslesen und wollte hierzu mit hilfe von

    mode = setmode(_fileno( stdin ), _O_BINARY );

    in den binärmodus wechseln. hab zuvor ein file geöffnet mit

    file.open(OpenDialog->FileName.c_str());

    und möchte meine binärdaten in s speichern.

    file >> s;

    in s stehen aber nur daten im textformat. kann mir da jemand helfen? danke

    ps: arbeite mit c++builder 6



  • Hallo,

    file scheint bei dir ein ofstream zu sein. In diesem Fall wird dir setmode nicht helfen.
    Ändere mal dein open dahingehend ab

    file.open(OpenDialog->FileName.c_str(), ios::binary);
    


  • file ist ein fstream und mit

    file.open(OpenDialog->FileName.c_str(), ios::binary);

    ist s null und wenn ich aus file ein ofstream mache ist file >> s nicht
    zulässig.

    s=[50];



  • Ok, ich hab das mit dem auslesen übersehen. Dann muss es natürlich ifstream sein.
    Wenn du fstream verwendest musst du noch angeben mas du machen willst (also ios::in oder ios::out).
    Was ist denn s? Ein char* Array? Beim Einlesen mußt du natürlich noch wissen wieviel Zeichen du einlesen möchtest. Hier wäre es günstiger file.read() zu verwenden. Möglich wäre auch get(), das liesst aber nur immer ein Zeichen ein. Du mußt aber auf jeden Fall auf das Ende der Datei prüfen (if( file.eof())).
    Weißt du denn wieviel Zeichen in deiner Datei sind?



  • Danke

    habs hinbekommen mit

    file.open(OpenDialog->FileName.c_str(), ios::in | ios::binary);

    und lesen dann mit

    file.read(s, sizeof(s));



  • Wenn s vom Typ char* ist, funktioniert das nur wenn genau 4 Zeichen drin stehen, da sizeof die Größe des Pointers und nicht die Größe des allozierten Speicherbereiches zurückgibt.


Anmelden zum Antworten