2012-07-30 15 views
9

estoy usando ifstream::read para leer un archivo,ifstream :: read no dice cuántos bytes realmente lee?

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

Pero el tamaño de a.txt podría ser inferior a 1000 bytes, así que ¿cómo se supone que voy a saber cuántos bytes se han leído en ifs?

Respuesta

18

Usted puede obtener la cantidad de personajes extraídos de la última operación con std::ifstream::gcount:

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

o

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

desde read(...) vuelve *this.

Cuestiones relacionadas