¿Cómo leer un archivo de entrada (archivo de texto) y validar la entrada como un entero válido?
Estoy escribiendo un programa que necesita leer un archivo de texto y buscar en la primera línea del archivo de texto un número entre 0 y 10. He encontrado un par de soluciones, pero todavía hay un problema:
Como leí el archivo:
const string FileName= argv[1];
ifstream fin(argv[1]);
if(!fin.good()){
cout<<"File does not exist ->> No File for reading";
exit(1);
}
getline(fin,tmp);
if(fin.eof()){
cout<<"file is empty"<<endl;
}
stringstream ss(tmp);
Primero utilicé atoi:
const int filenum = atoi(tmp.c_str());
if(filenum<1 || filenum>10){
cout<<"number of files is incorrect"<<endl;
//exit(1);
}
Si la primera línea es un carácter, cámbiela a cero. Pero quiero llamar a una excepción y terminar el programa.
Entonces utilicéisdigit
pero mi entrada es una cadena y no funciona con la cadena. Finalmente utilicé cada carácter en cadena pero todavía no funciona.
stringstream ss(tmp);
int i;
ss>>i;
if(isdigit(tmp[0])||isdigit(tmp[1])||tmp.length()<3)
{}