Zapis do pliku

powrot

Otwarcie pliku w trybie do zapisu

Do czytania pliku musimy stworzyć obiekt na podstawie klasy $$ofstream$$, która przechowuje wszystkie metody i atrybuty operujące na plikach do zapisu. W tym przypadku możemy dopatrzeć się analogii takiej jak w wyświetlaniu danych na ekranie. W tym celu użyjemy konstrukcji

          cout<<dane;

 

Zamiast obiektu $$cout$$ użyjemy własnego obiektu stworzonego na bazie klasy $$ofstream$$:

          ofstream jakas_nazwa("ścieżka do pliku"); 

 

lub

          ofstream jakas_nazwa;
          jakas_nazwa.open("ścieżka do pliku");

 

Zapis informacji wygląda następująco:

          ofstream jakas_nazwa("ścieżka do pliku");
          jakas_nazwa<<informacja;

 

Należy pamiętać, że jeśli plik nie istnieje to zostanie on utworzony, natomiast jeśli istnieje i są w nim już zapisane jakieś informacje, to zostaną one nadpisane.

Przykład.

Napiszemy program, który wczyta z klawiatury dwie liczby całkowite i zapisze je wraz z ich sumą w postaci:

pierwsza_liczba + druga_liczba = suma

do pliku dane.txt.

#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	int a, b;
	cout<<"Podaj dwie liczby: ";
	cin>>a>>b;
	
	ofstream zapis("dane.txt");
	
	zapis<<a<<" + "<<b<<" = "<<a+b;
	
	zapis.close(); //obowiązkowo należy zamknąć plik
	
	return 0;
}
 

 

Jeśli podamy 5 i 10 to w pliku dane.txt pojawi się taki ciąg:

5 + 10 = 15

 

Dopisywanie informacji do pliku

Jeśli chcemy dopisać dane na koniec pliku to musimy to zadeklarować przy jego otwarciu ustawiając tryb na $$ios::base::app$$:

        ofstream jakas_nazwa("ścieżka", ios_base::app); 

 

 Przykład.

#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	char *tekst = "Ala ma kota\n";
	
	ofstream zapis("dane.txt");//obiekt tworzymy tylko raz
	zapis<<tekst;
	zapis.close(); //obowiązkowo należy zamknąć plik
	
	zapis.open("dane.txt", ios_base::app);
	zapis<<tekst;
	zapis.close();
	
	return 0;
}