Почему я не могу прочитать двоичные данные fstream с помощью оператора >>?

Если я сделаю что-то вроде следующего:

ifstream file;
file.open("somefile", ios::binary);

unsigned int data;

file >> data;

Мой поток всегда будет устанавливать бит отказа и данные ] останется неинициализированным. Однако, если я читаю вместо этого char или unsigned char , поток в порядке. perror () сообщает мне, что "результат слишком велик".

Единственное, что я увидел в Google, - это предложение о том, что оператор >> не следует использовать для двоичных данных (предпочитаю read () ), но я обнаружил, что оператор чтобы быть чище и проще в использовании - и не требует заливки всего.

Может кто-нибудь объяснить эту проблему?

16
задан Remy Lebeau 31 August 2017 в 17:44
поделиться