Zapis danych do pliku C++

Kategoria: Zadania z programowania

Umiejętność zapisywania danych do pliku w C++ jest niezbędna, przed przystąpieniem do matury. Pliki można zapisywać w trybie binarnym oraz tekstowym za pomocą strumienia. Ustawiając odpowiednie flagi możemy ustalić czy informacja ma zostać dopisana do pliku czy ma go nadpisać (wyczyścić przed zapisem).

Zapisywanie danych do pliku C++

Oto podstawowe flagi używane podczas zapisu tekstu do pliku:

ios::out | ios::trunc – zawartość pliku zostanie usunięta przed zapisem
ios::out | ios::app – informacja zostanie dopisana na końcu istniejącego pliku

Program otwiera wskazany plik i sprawdza czy nie wystąpiły błędy. Jeżeli wszystko jest w porządku, rozpoczyna się zapis danych za pomocą strumienia. Odpowiednie flagi należy ustawiać podczas otwierania pliku (plik.open) i oddzielać pionowymi kreskami.

Kod w C++ (dopisywanie tekstu)

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main()
{
    string linia;
    fstream plik;

    plik.open("plik.txt", ios::out | ios::app);
    if(plik.good() == true)
    {
        plik << "jakiś tekst do dopisania";
        plik.close();
    }

    system("PAUSE");
    return(0);
}

Kod w C++ (czyszczenie pliku przed zapisem)

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main()
{
    string linia;
    fstream plik;

    plik.open("plik.txt", ios::out | ios::trunc);
    if(plik.good() == true)
    {
        plik << "nowy tekst";
        plik.close();
    }

    system("PAUSE");
    return(0);
}

Otwieramy plik używając biblioteki fstream. Ponieważ jedynie zapisujemy dane do pliku mogli byśmy użyć biblioteki ofstream. Nazwy pochodzą od języka angielskiego:

  • ifstream = in file stream = wczytywanie plików
  • ofstream = out file stream = zapisywania plików
  • fstream połączenie obu powyższych

Na maturze zawsze wymagane jest zapisanie wyników do pliku. Jeżeli wyników jest mało, możesz zapisać je ręcznie. Jeżeli okaże się, że trzeba zapisać 100 linijek, skorzystanie z takiego programu jest niezbędne.

Komentarze

Maciek

Witam, ja mam dziwny przypadek ponieważ kodzik mi normalnie działa nie wywala żadnych błędów , ale jak chce odczytać plik do którego programem zapisałem dane to jest on pusty. Dodam tylko że jeżeli odczytuje z tego pliku dane za pomocą strumienia ifstream to one normalnie się odczytują

Karol

Powiem szczerze – nie wiem.

Dominik

Witm, czy można wpisać do pliku tekstowego za pomocą cmd na maturze ?
Tzn.
program.exe>tekst.txt
i wtedy przepisuje nam wszystkie couty do pliku ?

Bartosz

Cześć Wszystkim, mam pytanie..motam się trochę z kodem chcąc z konsoli dopisać cokolwiek do pustego pliku ( w momencie jak na sztywno wpiszę tekst do zmiennej i potem zapisuję do pliku .. jest ok, natomiast gdy wprowadzam jakiś string z konsoli, to ten string nie jest potem zapisany do pliku – podoby kod do tego powyżej – dopisywanie tekstu. System którego używam do Fedora 18. Z góry dziękuję za pomoc. Pozdrawiam.

Karol

Akurat w tym wypadku zmienna ‚linia’ nie jest potrzebna. Usunę ten błąd.

honney

Artykuł krótki i na temat, takie lubie. Tylko jedno mnie zastanawia do czego jest zmienna:
string linia;
?

Mati

A jak dodać z blendera do opengl bo jak tak robie to nie działa!Pisać na e-mail [email protected]

Karol

Ten kod nie może zepsuć programu. 🙂

gabrys

nie dziala
popsulo mi program!!!

Hany

Bardzo przydatny artykuł, prosty, krótko i na temat czyli idealnie by odświeżyć sobie wiedzę z zakresu cpp.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *