[Lekcja 33] Odczytywanie liczb z pliku
Ostatnio zmodyfikowano 2014-11-21 22:56
pw1602 Temat założony przez niniejszego użytkownika |
[Lekcja 33] Odczytywanie liczb z pliku » 2014-11-21 12:27:15 Poprosiłbym o podpowiedź, gdzie jest jakiś błąd. Program działa, ale nie wyświetla mi się nic. #include <iostream> #include <string> #include <fstream>
using namespace std; bool bGood( string sNapis ) { ifstream plik; plik.open( sNapis.c_str() ); if( !plik.good() ) return false; while( true ) { int nA; int nB; int nC; plik >> nA >> nB >> nC; if( plik.good() ) cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl; else break; } return true; } int main() { if( !bGood( "plik.txt" ) ) cout << "Problem z otwarciem pliku!"; return 0; }
|
|
Monika90 |
» 2014-11-21 17:49:25 A jak to if( plik.good() ) cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl;
|
zastąpisz tym if( plik ) cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl;
to czy zadziała? |
|
NopeDotAvi |
» 2014-11-21 19:05:43 @Monika90 Zadziała. Można też sprawdzać za pomocą: plik.is_open() . Tylko nie zapominaj o zamknięciu pliku. |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2014-11-21 20:47:32 Wielkie dzięki. Działa. Dlaczego nie działało przy if( plik.good() ) cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl; a przy if( plik ) cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl; zadziałało? Skoro przy pierwszym warunku, jeśli plik został otwarty to powinno wyświetlić?! |
|
Monika90 |
» 2014-11-21 21:48:45 Wczytywanie się powiodło, ale podczas wczytywania osiągnięto koniec pliku. W takiej sytuacji good() zwraca false, pomimo że wczytywanie się udało. Dlatego nie sprawdzaj poprawnosći za pomocą plik.good(), tylko !plik.fail(). Albo po prostu plik bo plik użyte w warunku if znaczy to samo co !plik.fail() |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2014-11-21 22:56:03 Rozumiem.
Dziękuje za pomoc :) |
|
« 1 » |