Aby użyć w swoim programie strumieni powiązanych z plikami, należy zadeklarować użycie biblioteki fstream
W samym programie deklarujemy obiekt, który będzie czytał z konkretnego pliku lub zapisywał dane w pliku. Obiekt taki powinien mieć jeden z następujących trzech typów:
- ifstream - strumień wejściowy (input file stream)
- ofstream - strumień wyjściowy (output file stream
- fstream - strumień, z którego można zarówno czytać dane, jak i zapisywać dane do niego.
Dane czytamy ze strumieni i przekazujemy do strumieni za pomocą operatorów „<<” i „ >>” oraz funkcjami get(), getchar(), getline().
#include <fstream>
ofstream plik; //deklaracja obiektu do zapisu w pliku
plik.open("wyniki.txt") //skojarzenie obiektu z plikiem
ofstream plik("wyniki.txt") //Połączone dwie instrukcje
fstream plik //deklaracja obiektu do zapisu lub odczytu
plik.open("wyniki.txt", ios::out) //użycie trybu odczytu
Deklaracja zmiennej typu ofstream, albo fstream z parametrem ios::out spowodują, że plik zostanie wyczyszczony, a nowe dane zastąpią to, co było w nim wcześniej.
Aby dopisać nowe dane na koniec istniejącego pliku, trzeba użyć instrukcji:
ofstream plik;
plik.open(”wynik.txt”,ios::app);
lub użyć wariantu z pojedynczą instrukcją:
ofstream plik(”wynik.txt”,ios::app);
albo użyć fstream w miejsce ofstream.
plik.close();
Brak instrukcji zamknięcia pliku może spowodować (choć na ogół nie powoduje) różnego rodzaju problemy (np. niekompletne zapisanie się danych).
Zasada działania jest podobna jak przy zapisywaniu plików tylko zamiast strumienia ofstream używamy strumienia ifstream.
Kolejność operacji:
Stworzenie obiektu jednej z klasy: ifstream lub fstream.
Otwarcie pliku (strumienia).
Wykonanie operacji na pliku.
Zamknięcie pliku (zlikwidowanie strumienia).
ifstream plik; //deklaracja obiektu do odczytu z pliku
plik.open("dane.txt") //skojarzenie obiektu z plikiem
ifstream plik("dane.txt") //Połączone dwie instrukcje
fstream plik //deklaracja obiektu do zapisu lub odczytu
plik.open("dane.txt", ios::in) //użycie trybu odczytu
przy użyciu operatora >>
liniami przy użyciu funkcji getline()
znakami - funkcja get()
Funkcja logiczna eof() pozwala na sprawdzenie, czy osiągnięto koniec pliku.
//wyświetlenie zawartości pliku na ekranie - czytanie znak po znaku
char znak;
fstream plik("dane.txt");
while(!plik.eof())
{
plik.get(znak);
cout<<znak;
}
Metoda
plik.is_open()
zwraca wartość logiczną:
1 –plik otwarty do odczytu
0 – nie można otworzyć pliku
Można użyć funkcji:
plik.good()
plik.bad()
plik.fail()
sprawdzających stan otwartego pliku