¿Cómo puedo detectar y pasar a la siguiente línea usando std :: ifstream?ifstream, fin de línea y pasar a la siguiente línea?
void readData(ifstream& in)
{
string sz;
getline(in, sz);
cout << sz <<endl;
int v;
for(int i=0; in.good(); i++)
{
in >> v;
if (in.good())
cout << v << " ";
}
in.seekg(0, ios::beg);
sz.clear();
getline(in, sz);
cout << sz <<endl; //no longer reads
}
Sé bueno me diría si ha ocurrido un error pero la transmisión ya no funciona una vez que eso sucede. ¿Cómo puedo verificar si estoy al final de la línea antes de leer otra int?
Es posible que un int válido sea seguido inmediatamente por el final del archivo. Para considerar el análisis como un éxito, debe marcar in.fail() como falso, ya que in.good() devolverá falso si se llega al final del archivo incluso si la operación de extracción fue exitosa. –
¡Interesante Charles! –
@Charles: el 'operator void *' implícito llama 'fail', por lo que' while (en >> v) 'tendrá éxito si la extracción tiene éxito, independientemente de si el estado es EOF. – dalle