ostream schreibt 2 byte zu viel



  • hi
    ich habe eine forschleife, in der ich mit put einzelnde bytes schreibe.
    aber die datei ist am ende zwei bytes zu groß. eine andere datei die ich auch in der forschleife schreibe ist zwei byte kleiner. testausgaben geben mir die kleinere größe zurück.

    vector<unsigned char> dat=this->createData();
    
        cout<<dat.size()<<endl;//454
    
        ofstream saveStream(file.c_str());
        if(!saveStream.is_open()){return false;};
    
        int cnt=0;
        ofstream s2("F:\\%test\\12132.bmp");
    
        for(unsigned int i=0;i<dat.size();i++){
            saveStream.put(dat[i]);//größe am ende 456 byte
            s2.put(111);//größe am ende 454 byte
            cnt++;
        };
        saveStream.close();s2.close();
    
        cout<<cnt<<endl;//454
    

    wie kann das kommen?
    was mache ich falsch?



  • In die Falle bin ich letztens auch gelaufen.

    Öffne den Stream mal mit

    ofstream saveStream(file.c_str(), ios::out | ios::binary | ios::trunc);
    

    Sonst wird im Text Modus geschrieben und da werden z.B. Zeilenumbrüche an die Systemgegebenheiten angepasst ("\n" wird zu "\r\n").



  • was für ein blöder fehler.....
    aber vielen dank!


Anmelden zum Antworten