¿Es posible usar getline()
para leer un archivo válido sin establecer failbit
? Me gustaría usar failbit
para que se genere una excepción si el archivo de entrada no es legible.Use getline() sin configurar failbit
El siguiente código siempre muestra basic_ios::clear
como la última línea, incluso si se especifica una entrada válida.
test.cc:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
ifstream inf;
string line;
inf.exceptions(ifstream::failbit);
try {
inf.open(argv[1]);
while(getline(inf,line))
cout << line << endl;
inf.close();
} catch(ifstream::failure e) {
cout << e.what() << endl;
}
}
input.txt:
the first line
the second line
the last line
resultados:
$ ./a.out input.txt
the first line
the second line
the last line
basic_ios::clear
¿Cuándo espera que la failbit a ser elevada cuando se utiliza getline()? – selalerer
Si el archivo no existe. ej. './a.out nosuchfile.txt' – Jeremiah
Para eso puedes marcar is_open() luego de abrir el archivo. – selalerer