I can read for example , 4 bytes from file using 

```
ifstream r(filename , ios::binary | ios::in)
uint_32 readHere;
r.read( (char*)&readHere, 4 )

```

But how could i read 4.5 bytes = 4bytes and 4 bits. 

What came to my mind is 

```
ifstream r(filename , ios::binary | std::in)
uint_64t readHere;
r.read( (char*)&readHere, 5 ) // reading 5 bytes ;

uint_64t tmp = readHere & 11111111 // extract 5th bytes
tmp = tmp >> 4  // get first half of the bites
readHere = (( readHere >> 8 ) << 8) | tmp     // remove 5th byte then add 4 bits

```

But im not sure how shouldi take half of byte , if first or last 4.
Is there some better way how to retrieve it?