Ты не в С++ еще очень зеленый, а в информатике в целом.
Упорно долбишься в принципиально неверно поставленную цель.
Единственный способ, которым ты можешь наглядно отобразить бинарную информацию и ничего не потерять - это hexdump (отображение каждого символа его шестнадцатеричным кодом). Собственно, все так и делают еще с прошлого века.
Аналогично, работа с бинарными данными принципиально отличается от работы со строками. Ты получаешь байты и обрабатываешь байты. Если какой-то кусок этих байтов выстраивается в строку в какой-то кодировке - копируешь этот кусок, присваиваешь его строке, и тогда уже можно использовать библиотеки, перекодирующие из одной кодировки в другую. Но пока у тебя файл, в котором навалено разных данных и служебной информации - разбирать его надо именно побайтово.