Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Obsługa plików w C++ – zapis danych

Obsługa plików przez programy komputerowe daje bardzo dużo możliwości. To właśnie w plikach możemy między innymi zapisać potrzebne dane wprowadzone przez użytkownika na przykład jakieś ustawienia lub inne informacje, których wprowadzanie co chwilę utrudniało by lub całkowicie umożliwiało sprawną obsługę dane aplikacji. Przyjrzyjmy się więc technikom zapisu danych do plików w języku C++.

Na początku musimy oczywiście dołączyć odpowiednią bibliotekę  (fstream):

#include <fstream> //import biblioteki fstream

Teraz możemy zabrać się za pisanie kodu odpowiedzialnego za zapis naszych danych.

Utwórzmy więc obiekt typu fstream na bazie którego będziemy wykonywać dalsze operacje:

fstream naszPlik;

Teraz możemy na przykład otworzyć plik do którego chcemy coś zapisać. Wykonuje się to tak:

fstream naszPlik;

naszPlik.open("nazwaNaszegoPliku.txt", ios:app); //otwórz plik nazwaNaszegoPliku.txt, ustaw wskaźnik na końcu i tam dopisuj dane

Metoda open obiektu fstream zaprezentowana wyżej przyjmuje dwa argumenty, nazwę pliku wraz z rozszerzeniem oraz informację o trybie w jakim dany plik chcemy otworzyć. Przy trybie otwarcia pliku w zależności od potrzeb możemy zastosować kilka poleceń (razem oddzielonych znakiem | lub osobno jak w przykładzie wyżej):

ios::appOtwiera plik tylko do zapisu, ustawia wskaźnik na jego końcu i tam zapisuje dane.
ios::ateUstawianie wskaźnika na koniec pliku.
ios::binaryOtwarcie pliku w trybie binarnym, tzn. dane traktowane są jak binarne, a nie tekstowe.
ios::inOtwarcie pliku w trybie do odczytu.
ios::outOtwarcie pliku w trybie do zapisu.
ios::truncPodczas otwierania plik jest czyszczony (tzn. usuwana jest jego zawartość).

Po otwarciu pliku przyszła pora na zapisanie do niego jakiś danych. Przyjrzyjmy się więc pierwszej metodzie, która to umożliwia.

Zapis danych za pomocą strumienia

Zapisywanie danych za pomocą strumienia jest naprawdę banalne. Wszystko działa tak samo jak przy wypisywaniu informacji na ekranie tyle, że zamiast okna konsoli mamy tutaj plik:

naszPlik << zmiennaZjakasDana; //oczywiście naszPlik to obiekt typu fstream

Zapis danych za pomocą metody write

Kolejną możliwością zapisania danych jest użycie metody write obiektu fstream. Odbywa się to w następujący sposób:

string jakiesDane = "zapisz to do pliku";

naszPlik.write(&jakiesDane[0], jakiesDane.length()); //zapisujemy jakieś dane zaczynając od indeksu 0 i kończąc przy ostatnim indeksie

Oczywiście dostępu do pliku nie uzyskamy kiedy taki plik na przykład nie istnieje lub nie mamy praw zapisu.

Zamykanie pliku

Na koniec pozostało nam zamknięcie pliku, co robi się tak:

naszPlik.close();

W pełni działający program:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

    fstream naszPlik;

    naszPlik.open("nazwaPliku.txt", ios::out);

    string d = "111";

    naszPlik << d;

    naszPlik.write(&d[0], d.length());

    naszPlik.close();

    return 0;
}

 Fot: toolmantim, Flickr | CC.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest