Se faccio qualcosa di simile al seguente:Perché non riesco a leggere i dati binari di fstream con l'operatore >>?
ifstream file;
file.open("somefile", ios::binary);
unsigned int data;
file >> data;
mio stream sarà sempre impostato la failbit
e la data
rimarrà non inizializzato. Tuttavia, se leggo un char
o unsigned char
, lo stream va bene. perror()
mi dice "risultato troppo grande".
L'unica cosa che ho visto su Google è stato un suggerimento dicendo che operator>>
non deve essere utilizzato per i dati binari (preferire read()
), ma trovo l'operatore ad essere più pulito e più facile da usare - e non richiede casting tutto
Qualcuno può spiegare questo problema?
Hai il motivo per cui è così nella tua risposta: "a seconda che int sia a 32 o 64 bit". Attualmente, il codice usando '' è portatile, la tua proposta no. –
Caleth