[C++]Obsługa plików.
Ostatnio zmodyfikowano 2014-05-14 20:49
Azaks Temat założony przez niniejszego użytkownika |
[C++]Obsługa plików. » 2014-05-14 19:27:15 Chciałbym napisać prosty program wczytujący zawartość pliku tekstowego. Tak wygląda mój kod: #include <iostream> #include <string> #include <fstream> #include <cstdlib> using namespace std;
int main() { string linia; ifstream plik; plik.open( "tekst.txt" ); if( plik.good() ) { cout << "plik zostal poprawnie wczytany" << endl; while( !plik.eof() ) { getline( plik, linia ); cout << linia << endl; } } else cout << "plik zostal niepoprawnie wczytany" << endl; plik.close(); return 0; }
Działa , aczkolwiek zwraca mi coś takiego: Plik zostal poprawnie wczytany 88888888888888888888888888( i wiele wiecej tych osemek )
Mimo ,że plik ma taką zawartość: Co jest nie tak? |
|
Jacob99 |
» 2014-05-14 19:34:41 Nie wiem czemu daje ci złe wyniki. Ja wypróbowałem i działa dobrze. |
|
Monika90 |
» 2014-05-14 19:40:42 while( !plik.eof() ) { getline( plik, linia ); cout << linia << endl; }
ta pętla jest błędna, nie pisz nigdy pętli postaci while (!plik.eof()) { } |
|
Jacob99 |
» 2014-05-14 19:44:21 Czemu ten zapis jest błędny? |
|
michal11 |
» 2014-05-14 19:48:35 Ponieważ taki zapis polega na operowaniu kursorem, a ifstream to strumień. |
|
Azaks Temat założony przez niniejszego użytkownika |
» 2014-05-14 19:50:15 Monika90 a jak powinno być poprawnie ? Obsługę plików dopiero co zaczynam. ;) |
|
michal11 |
» 2014-05-14 19:53:02 while( plik >> string ) { cout << string << endl; }
|
|
Jacob99 |
» 2014-05-14 19:54:40 Jeżeli już to nie kursor tylko wskaźnik czytania. A poza tym eof() służy właśnie do "oznajmienia" nam, że plik się skończył, bo nie można dalej już czytać. |
|
« 1 » 2 3 |