Gwynbleidd Temat założony przez niniejszego użytkownika |
Rozdział 33 - błędny kod źródłowy przykładu » 2014-09-28 15:19:14 Link do rozdziału: http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-danych-z-pliku-za-pomoca-operatora/325 Po skopiowaniu kodu źródłowego z przykładu, utworzeniu pliku dane.txt o zawartości: "10 dodac 5 3 odjac 2 77 zonk 3 99 dodac 1"
Program nie sczytuje ostatniej linijki. Wystarczy dodać znak biały po "99 dodac 1" i już wszystko działa.
Jak robiłem zadania z zajęć i korzystałem z tej metody otwierania plików, to również nie sczytywał zmiennych. Po "sczytaniu" i wypisaniu tego, co sczytał (za pomocą cina kolejne liczby), wypisywał określone liczby, w zależności od zmiennej. Jak miał to być int, to zawsze wypisywał taką samą wartość, jak float, to również jakąś określoną itd.
Na zajęciach problem rozwiązała zmiana wczytywania pliku na (w tym wypadku byłoby to) "ifstream plik (nazwaPliku.c_str());". Tutaj niestety problemu to nie rozwiązuje. Dziwne jest to, bo jak po "plik >> a >> b >> c;" każemy wypisać sczytane zmienne, to wypisuje razem z ostatnią linijką, lecz operacji dla niej nie przeprowadza, a przecież "plik.good()" powinien zwracać wartość 1.
@edit Dobra, rozgryzłem ten problem. Zamiast plik >> a >> b >> c; if( plik.good() ) wykonajOperacje( a, b, c ); else break; powinno być plik >> a >> b >> c; wykonajOperacje( a, b, c ); if( !plik.good() ) break; Teraz najpierw wykonuje operację dla wczytanych danych, a dopiero potem sprawdza, czy dalej coś jeszcze jest. Pozostaje poprawić kod. |
|
Monika90 |
» 2014-09-28 15:41:13 można pooprawić na plik >> a >> b >> c; if( !plik.fail() ) wykonajOperacje( a, b, c ); else break;
albo na plik >> a >> b >> c; if( plik ) wykonajOperacje( a, b, c ); else break;
|
|
Gwynbleidd Temat założony przez niniejszego użytkownika |
» 2014-09-28 18:47:02 Tak, ale z racji tego, że Twoje propozycje korzystają z rozwiązań, których osoba ucząc się od początku z kursu jeszcze nie poznała, to korekta na twoje rozwiązania byłaby niestosowna. |
|
pekfos |
» 2014-09-28 18:51:01 Twoje propozycje korzystają z rozwiązań, których osoba ucząc się od początku z kursu jeszcze nie poznała | fail() jest znane od niemal początku kursu. |
|
Gwynbleidd Temat założony przez niniejszego użytkownika |
» 2014-10-05 19:24:56 Kiedy lekcja zostanie poprawiona? |
|
Rashmistrz |
» 2014-10-07 21:10:42 fail() jest znane od niemal początku kursu. | Przy obsłudze plików nie ma żadnej wzmianki o tej metodzie, ale niektórzy mogli się domyślić po zobaczeniu metody .good(). |
|
Memento96 |
» 2014-10-08 08:47:17 Kiedy lekcja zostanie poprawiona? |
Już jest poprawione ;) Dzisiaj rozwiązywałem zad. dom i poszło ładnie |
|
« 1 » |