Jak odczytywać z pliku wejściowego (plik tekstowy) i sprawdzać poprawność wejścia jako prawidłowej liczby całkowitej?
Piszę program, który musi odczytać plik tekstowy i sprawdzić pierwszy wiersz pliku tekstowego pod kątem liczby od 0 do 10. Wymyśliłem kilka rozwiązań, ale nadal jest problem:
Jak czytam plik:
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);
najpierw użyłem atoi:
const int filenum = atoi(tmp.c_str());
if(filenum<1 || filenum>10){
cout<<"number of files is incorrect"<<endl;
//exit(1);
}
Jeśli pierwszą linią jest znak, zmień go na zero, ale chcę wywołać wyjątek i zakończyć program.
Potem użyłemisdigit
ale mój wpis jest ciągiem i nie działa z ciągiem. W końcu użyłem każdego znaku w łańcuchu, ale nadal nie działa.
stringstream ss(tmp);
int i;
ss>>i;
if(isdigit(tmp[0])||isdigit(tmp[1])||tmp.length()<3)
{}