Why does writing to binary file writes one byte from no where
08:26 27 Apr 2017

I have a class for writing to bytes to binary file

class BITWRITER{
public:
ofstream OFD;
char var;
int x;
BITWRITER(char* pot){
    OFD.open(pot);
    x = 0;
    var  =0;

}
void WRITE(bool b){
    var ^= (-b^var)&(1 << x);
    x++;
    if(x == 7){
        OFD.write(&var, 1);
        x = 0;
        var = 0;
    }

}
}

And my sample code:

string bitCode = "0001010";
bool BitIsOne = false;
BITWRITER *write= new BITWRITER("out.bin");
for(int i =  bitCode.length()-1 ; i >= 0; i--){
    if(bitCode[i] == '1')
            BitIsOne=true;
        else
            BitIsOne=false;
    write->WRITE(BitIsOne);
}
delete write;

What I don't get it is, why when i run this exact code, when I then next read this file instead of having in binary file only one byte, I have two bytes.

In this example, the output should be "1010" but before this one random byte is somehow created ("1101").

Any ideas would be appreciated!

c++ binary bin