Witam, otóż dotarłem w kursie na cpp0x do rozdziału 4.3 i męczę się nad 2 zadaniem http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-zawartosci-pliku-a-kontrola-bledow/485
napisałem taki kod:
#include <iostream>
#include <fstream>
using namespace std;
bool newl(ifstream & plik )
{
char cZnak;
for(;; ) //nieskoñczona pêtla
{
plik.clear();
cZnak = plik.peek(); //sprawdzamy jaki kolejny znak zostanie zwrócony przez operacjê odczytu
if( plik.fail() || plik.bad() )
return false; //wyst¹pi³ b³¹d odczytu danych
if( !isspace( cZnak ) )
return false; //pobrany znak nie jest bia³ym znakiem
plik.get( cZnak ); //odczytujemy bia³y znak z pliku
if( plik.fail() || plik.bad() )
return false; //wyst¹pi³ b³¹d odczytu danych
if( cZnak == '\n' )
return true;
} //for
}
bool nload(string fname)
{
ifstream file;
file.open(fname.c_str());
if (!file.good())
return false;
int n,s=0,l=1,d=0;
while (!file.eof())
{
file>>n;
if (file.fail())
{
file.clear();
file.get();
d=1;
continue;
}
s+=n;
if (newl(file))
{
if(d>0)
{
cout<<"error in line "<<l<<endl;
s=0;
d=0;
l++;
}
else
{
cout<<s<<endl;
s=0;
d=0;
l++;
}
}
}
}
int main()
{
if (!nload("file2.txt"))
cout<<"nie udalo sie wyswietlic pliku";
return 0;
}
Teoretycznie wszystko działa, ale kiedy w tekście błąd jest na ostatnim miejscu wiersza coś się psuje, przykładowo po dopisaniu 6 linijki do wczytania: 4 G D, program w ogóle jej nie uwzględnia, nie mam pojęcia gdzie jest błąd