Programowanie i algorytmy

Zapis do pliku

powrot

Otwarcie pliku w trybie do zapisu

Do czytania pliku musimy stworzyć obiekt na podstawie klasy {tex}ofstream{/tex}, 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 {tex}cout{/tex} użyjemy własnego obiektu stworzonego na bazie klasy {tex}ofstream{/tex}:

          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 {tex}ios::base::app{/tex}:

        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;
}