ifstream :: read ne dit pas combien d’octets il lit réellement?

J’utilise ifstream::read pour lire un fichier,

 ifstream ifs("a.txt"); char buf[1024]; ifs.read(buf, 1024); 

Mais la taille de a.txt peut être inférieure à 1000 bytes , alors comment suis-je censé savoir combien d’octets ont été lus depuis ifs ?

Vous pouvez obtenir le nombre de caractères extraits par la dernière opération avec std::ifstream::gcount :

 ifstream ifs("a.txt"); char buf[1024]; ifs.read(buf, 1024); size_t extracted = ifs.gcount(); 

ou

 ifstream ifs("a.txt"); char buf[1024]; size_t extracted = ifs.read(buf, 1024).gcount(); 

depuis read(...) renvoie *this .