Si je fais quelque chose comme ce qui suit:Pourquoi ne puis-je pas lire les données binaires de fstream avec l'opérateur >>?
ifstream file;
file.open("somefile", ios::binary);
unsigned int data;
file >> data;
Mon flux sera toujours mis l'failbit
et le data
demeurera non initialisée. Cependant, si je lis un char
ou unsigned char
à la place, le flux est bon. perror()
me dit "résultat trop grand". La seule chose que j'ai vu sur Google était une suggestion disant que operator>>
ne devrait pas être utilisé pour des données binaires (préférez read()
), mais je trouve l'opérateur plus propre et plus facile à utiliser - et il ne nécessite pas couler tout.
Quelqu'un peut-il expliquer ce problème?
Vous avez la raison pour laquelle c'est ainsi dans votre réponse: "selon que int est 32 bits ou 64 bits". Actuellement, le code utilisant '' est portable, votre proposition ne l'est pas. –
Caleth