[C++]Wczytywanie liczb z pliku tekstowego
Ostatnio zmodyfikowano 2015-12-27 02:06
Euvarios Temat założony przez niniejszego użytkownika |
[C++]Wczytywanie liczb z pliku tekstowego » 2015-12-26 20:46:01 Witam, chciałem zrobić program, który wypisze wszystkie liczby znajdujące się w notatniku, jako utrudnienie liczby te ukryłem między tekstem. To jest ten kod: #include <iostream> #include <fstream> using namespace std;
void wypisanieLiczb_plik( string nazwaPiku ) { int liczba; int x = 1; plik.open( nazwaPiku.c_str() ); if( plik.bad() ) { cout << "Nie udalo sie otworzyc pliku..." << endl; plik.close(); return; } while( !plik.eof() ) { plik >> liczba; if( plik.fail() ) { plik.clear(); continue; } x++; cout << x << " liczba to: " << liczba << endl; } plik.close(); }
int main() { wypisanieLiczb_plik( "tekst.txt" ); return 0; }
Problem leży w tym, że wpada on w nieskończoną pętlę while i nie mam pojęcia dlaczego. Jestem świeżo po czytaniu kursu o obsłudze plików i mogłem źle zrozumieć jakąś komendę dlatego chciałbym żeby ktoś przeanalizował to co napisałem i poprawił mnie. Tutaj dodatkowo zawartość pliku tekstowego na którym pracuję...: To 23 jest 32 tekst. Ten tekst 54 jest bardzo dziwny. Nie ma w nim nic 123 ciekawego. Czy jestes 69 pewien, że chcesz go czytac? To trudno bo 3 ten tekst sie wlasnie 82 konczy. |
|
carlosmay |
» 2015-12-26 21:25:54 if( plik.fail() ) { plik.clear(); continue; }
|
|
|
Euvarios Temat założony przez niniejszego użytkownika |
» 2015-12-26 21:41:11 Rozumiem, że mam wyczyścić bufor strumienia używając .sync()? Nie mam pojęcia jednak do jakiego obiektu się odnieść... Możesz mi napisać co powinienem wyczyścić? Dodanie przed continue linijki plik.sync() nie rozwiązuje problemu |
|
carlosmay |
» 2015-12-27 02:06:12 plik.ignore( numeric_limits < streamsize >::max(), ' ' ); Zamieniłbym wczytywanie do zmiennej liczbowej na zmienną typu std::string , sprawdzał po wczytaniu czy string zawiera cyfry, jeśli tak skonwertować na liczbę (oczywiście jeśli trzeba) i wypisał liczbę. |
|
« 1 » |