



Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
C++ Programowanie Obsługa plików Obsługa plików w cpp Notatka
Typologia: Schematy
Załadowany 12.03.2023
1 / 5
Ta strona nie jest widoczna w podglądzie
Nie przegap ważnych części!
Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików.
#include
Przed rozpoczęciem pracy na pliku niezbędne jest stworzenie zmiennej, która pozwoli nam na dokonywanie operacji na wybranym pliku:
std::fstream plik;
lub w przypadku korzystania z przestrzeni nazw std:
fstream plik;
Utworzona w ten sposób zmienna nie wskazuje na żaden plik. W celu przypi- sania do niej konkretnego pliku należy skorzystać z funkcji open() zawartej w klasie std::fstream :
plik.open( "nazwa_pliku.txt", tryb_otwarcia_pliku);
Podczas przypisywania pliku do zmiennej należy wyszczególnić jeden, lub więcej trybów otwarcia pliku: ios::app — Ustawia wewnętrzny wskaźnik zapisu pliku na jego koniec. Plik otwarty w trybie tylko do zapisu. Dane mogą być zapisywane tylko i wyłącz- nie na końcu pliku. ios::ate — Ustawia wewnętrzny wskaźnik pliku na jego koniec w chwili otwarcia pliku. ios::binary — Informacja dla kompilatora, aby dane były traktowane jako strumień danych binarnych. ios::in — Zezwala na odczyt danych z pliku. ios::out — Zezwala na zapis danych do pliku. ios::trunc — Zawartość pliku zostaje wyczyszczona podczas otwarcia.
fstream plik; plik.open( "nazwa_pliku.txt", ios::in | ios::out );
Po zakończeniu operacji z plikiem należy go zamknąć. W tym celu wykorzy- stana zostanie funkcja close() :
plik.close();
Przykład:
#include
int main() { fstream plik; plik.open( "nazwa_pliku.txt", ios::in | ios::out ); if( plik.good() == true ) { cout << "Uzyskano dostep do pliku!" << endl;
plik.close(); } else cout << "Brak dostepu do pliku " << endl;
return( 0 ); }
Istnieje kilka metod na odczytywanie danych z pliku.
2.2.1 Odczyt danych za pomocą strumienia.
Odczyt danych za pomocą strumienia jest analogiczny do działania std::cin». Dane odczytane w ten sposób są zawsze traktowane jako tekst. Niestety funk- cja ta nie pozwoli na odczytanie informacji o białych znakach (podobnie jak w rozdziale 2).
nazwa_zmiennej_plikowej >> zmienna_do_ktorej_zapisuje_dane; plik >> dane;
2.2.2 Odczyt danych wierszami.
Do odczytu danych wierszami posłuży nam już znana z rozdziału 2 funk- cja getline().
Przykład:
#include
int main() { fstream plik; plik.open( "plik.txt", ios::in | ios::out ); if( plik.good() == true ) { cout << "Uzyskano dostep do pliku!" << endl;
//tu nalezy przeprowadzac operacje na pliku (zapis/odczyt etc.) //zapis do pliku
plik << "Ten tekst pojawi sie w naszym pliku" << endl; string napis, tekst; tekst="to jest string, ktory przeniesie sie do pliku\n"; plik << tekst; cout<<"Podaj dowolny string, zostanie on zapisany w " <<" pliku"<<endl; getline(cin, napis); plik.write(&napis[0],napis.length());
//odczyt z pliku
//przeniesienie kursora o 3 bajty w strone poczatku pliku plik.seekg( + 3, std::ios_base::beg);
string napis1, napis2; plik >> napis1; cout << "Pierwsza linijka pliku:" << endl << napis1 << endl;
getline(plik, napis2); cout << "Kolejna linijka pliku: " << endl << napis2 << endl;
char temp [10]; plik.read(temp, 10); cout << "kolejna linijka pliku: " << endl; for(int i=0; i<10; i++) cout <<temp[i]; cout << endl;
plik.close(); } else cout << "Brak dostepu do pliku " << endl;
return( 0 ); }
Na potrzeby powyższego przykładu należy stworzyć w katalogu z plikiem *.cpp programu plik tekstowy: plik.txt.
W oparciu o zagadnienia wymienione w niniejszej instrukcji proszę udosko- nalić prosty interface użytkowy automatu do sprzedaży przekąsek i napoi stworzony na poprzednich zajęciach.
Wymogi dotyczące programu: