Lekcja 34 Praca Domowa
Ostatnio zmodyfikowano 2015-12-28 03:42
wikiejko Temat założony przez niniejszego użytkownika |
Lekcja 34 Praca Domowa » 2015-12-27 23:58:37 Tutaj kod #include <iostream> #include <string> #include <fstream>
int main() { int wynik = 0; std::ifstream plik; plik.open( "C:/Users/Tak/Desktop/C++/34.txt" ); if( !plik.good() ) { std::cout << "Nie udalo sie odtworzyc pliku "; } while( !plik.eof() ) { int liczba; plik >> liczba; if( plik.fail() ) { plik.clear(); continue; } std::cout << liczba << std::endl; wynik += liczba; } std::cout << wynik; return 0; }
Otóż problem jest taki, że nie wiem dlaczego nic się nie dzieje po odpaleniu programu. Mam teorię, że moment sprawdzenia pierwszego znaku robi się w kółko, lecz nie wiem czy to jest przyczyna, a tym bardziej co z tym zrobić |
|
carlosmay |
» 2015-12-28 00:07:03 Mam teorię, że moment sprawdzenia pierwszego znaku robi się w kółko, |
Do podtrzymywania, bądź obalania teorii najlepszy debugger. Nie ma czyszczenia strumienia z nieprawidłowych danych, więc przy pierwszym niepowodzeniu wczytywania program zapętla się. lecz nie wiem czy to jest przyczyna, a tym bardziej co z tym zrobić |
dodać opróżnianie strumienia po wykryciu błędu. |
|
wikiejko Temat założony przez niniejszego użytkownika |
» 2015-12-28 00:12:55 Czyli coś na zasadzie std::cin.sync() ? //Edit Znalazłem coś takiego plik.get(), czy te 2 metody robią to samo? |
|
carlosmay |
» 2015-12-28 00:47:33 Metoda *.ignore(); do czyszczenia strunienia. Znalazłem coś takiego plik.get(), czy te 2 metody robią to samo? | plik.get() pobiera jeden znak. Umiejętne użycie zadziała jak metoda *.ingnore() |
|
wikiejko Temat założony przez niniejszego użytkownika |
» 2015-12-28 03:42:39 Dzięki za pomoc! //Rozwiązany |
|
« 1 » |