Недавно я использовал оператор >>
при чтении двоичных файлов, но в некоторых случаях он просто пропускал байт. Это вызвало у меня много проблем, чтобы найти, где ошибка в моем коде, но, наконец, мне удалось исправить это с помощью метода get()
, но я до сих пор не знаю, почему >>
время от времени пропускал байты .
Цель состоит в том, чтобы загрузить первый байт из файла в m_Value
, то есть uint8_t
.
Код с >>
:
bool CByte :: load ( ifstream & fin)
{
if(! ( fin >> m_Value ) ) return false;
return true;
}
Код с get()
:
bool CByte :: load ( ifstream & fin)
{
char c = 0;
if(! ( fin . get ( c ) ) ) return false;
m_Value = static_cast <uint8_t> (c);
return true;
}