Если я сделаю что-то вроде следующего:
ifstream file;
file.open("somefile", ios::binary);
unsigned int data;
file >> data;
Мой поток всегда будет устанавливать failbit
, а data
останется неинициализированным. Однако, если вместо этого я читаю char
или unsigned char
, с потоком все в порядке. perror()
говорит мне "результат слишком велик".
Единственное, что я увидел в Google, это предложение о том, что operator>>
не следует использовать для двоичных данных (предпочтительнее read()
), но я считаю, что этот оператор чище и проще в использовании — и он не требует приведения всего.
Может ли кто-нибудь объяснить эту проблему?