Bonjour à tous,

Je me permets de venir vous poser une question des plus basiques mais qui est entrain de me faire pousser des cheveux blancs...
Je cherche à lire un fichier et à détecter lorsque j'ai atteint la fin du fichier. Vous allez me dire rien de plus simple...

J'ai le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
 
int main()
{
        std::fstream                    file("monfichier.txt", std::ios::in|std::ios::binary);
        char                            buffer[80001];
 
        file.read(buffer, 80000);
        std::cout << "Read: " << file.gcount() << " - end? " << file.eof() << std::endl;
 
        file.read(buffer, 80000);
        std::cout << "Read: " << file.gcount() << " - end? " << file.eof() << std::endl;
 
        file.read(buffer, 80000);
        std::cout << "Read: " << file.gcount() << " - end? " << file.eof() << std::endl;
 
        return 1;
}
Le soucis c'est que si je mets un fichier qui fait PILE 160 000 octets, à la deuxième lecture, je ne déclenche pas le flag EOF alors que le dernier read me sort 0 octet lu...
Qu'est ce que j'ai râté ?!?

Petite précision: la lecture n'est pas faite dans une boucle mais dans des appels successifs

Merci d'avance pour votre aide sur ce cas si ... basic