Jeśli robię coś jak następuje:Dlaczego nie mogę odczytać danych binarnych fstream za pomocą operatora >>?
ifstream file;
file.open("somefile", ios::binary);
unsigned int data;
file >> data;
Mój strumień zawsze ustawić failbit
i data
pozostanie niezainicjowany. Jeśli jednak zamiast tego przeczytam char
lub unsigned char
, strumień jest w porządku. perror()
mówi mi "wynik zbyt duży".
Jedyną rzeczą, jaką zobaczyłem w Google była sugestia, mówiąc, że operator>>
nie powinny być wykorzystywane do danych binarnych (wolą read()
), ale uważam, że operator może być czystsze i łatwiejsze w obsłudze - i nie wymaga rzucając wszystko.
Czy ktoś może wyjaśnić ten problem?
Masz powód, dlaczego tak jest w Twojej odpowiedzi: "w zależności od tego, czy int jest 32-bitowe czy 64-bitowe". Obecnie kod używający "" jest przenośny, twoja propozycja nie jest. –
Caleth