Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 33] Odczytywanie liczb z pliku

Ostatnio zmodyfikowano 2014-11-21 22:56
Autor Wiadomość
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.

C/C++
#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;
}
P-121090
Monika90
» 2014-11-21 17:49:25
A jak to
C/C++
if( plik.good() )
     cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl;


zastąpisz tym
C/C++
if( plik )
     cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl;

to czy zadziała?
P-121114
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.
P-121118
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
C/C++
if( plik.good() )
     cout << nA << " + " << nB << " + " << nC << " + " << nA + nB + nC << endl;

a przy

C/C++
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ć?!
P-121130
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()
P-121134
pw1602
Temat założony przez niniejszego użytkownika
» 2014-11-21 22:56:03
Rozumiem.

Dziękuje za pomoc :)
P-121136
« 1 »
  Strona 1 z 1