Jak czytać i zapisać do pliku w C ++

Jak czytać i zapisać do pliku w C ++

W tym artykule pokażemy, jak czytać i napisać do pliku w języku programowania C ++, używając kilku przykładów. Aby zrozumieć operacje plików C ++, takie jak Read and Write, musimy najpierw zrozumieć koncepcję strumienia w C++.

Co to jest strumień?

Strumień to po prostu przepływ danych lub znaków. Istnieją dwa rodzaje strumieni: strumienie wejściowe i strumienie wyjściowe. Strumień wejściowy służy do odczytu danych z zewnętrznego urządzenia wejściowego, takiego jak klawiatura, podczas gdy strumień wyjściowy jest używany do zapisywania danych do zewnętrznego urządzenia wyjściowego, takiego jak monitor. Plik można uznać za źródło wejściowe, jak i wyjściowe.

W C ++ używamy strumienia do wysyłania lub odbierania danych do lub ze źródła zewnętrznego.

Możemy użyć wbudowanych klas, aby uzyskać dostęp do strumienia wejściowego/wyjściowego, i.mi., „IOS”.

Oto hierarchia klas strumieniowych języka programowania C ++:

Obiekty „CIN” i „Cout” są używane do odczytu danych z klawiatury i wyświetlania danych wyjściowych na monitorze. Ponadto „ifstream”, który oznacza „strumień plików wejściowych”, służy do odczytu strumienia danych z pliku, oraz „ofStream”, który oznacza „strumień plików wyjściowych”, służy do zapisywania strumienia danych do pliku.

„Iostram.H ”Plik zawiera wszystkie wymagane standardowe klasy wejściowe/wyjściowe w języku programowania C ++.

Przykłady

Teraz, gdy rozumiesz podstawy strumieni, omówimy następujące przykłady, które pomogą Ci lepiej zrozumieć operacje plików w C ++:

  • Przykład 1: Otwórz i zamknij plik
  • Przykład 2: Napisz do pliku
  • Przykład 3: Przeczytaj z pliku
  • Przykład 4: Przeczytaj i zapisz do pliku
  • Przykład 5: Przeczytaj i zapisz do pliku binarnego

Przykład 1: Otwórz i zamknij plik

W tym przykładowym programie pokażemy, jak otworzyć/utworzyć plik i jak zamknąć plik w C++. Jak widać w poniższym programie, uwzględniliśmy bibliotekę wymaganą do operacji plików.

Aby otworzyć i zamknąć plik, potrzebujemy obiektu Ofstream. Następnie, aby odczytać lub zapisać do pliku, musimy otworzyć plik. Dołączyliśmy plik nagłówka Fstream w wierszu nr-1, abyśmy mogli uzyskać dostęp do klasy OfStream.

Oświadczyliśmy MyFile_Handler jako obiekt Ofstream wewnątrz głównej funkcji. Następnie możemy użyć funkcji Open (), aby utworzyć pusty plik i funkcję Close (), aby zamknąć plik.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

Ofstream myfile_handler;
// plik otwarty
myfile_handler.Otwórz („File_1.tekst");
// Zamknij plik
myfile_handler.zamknąć();
powrót 0;

Teraz skompilujemy program i zbadamy wyniki. Jak widać w oknie wyjściowym poniżej, „File_1.Plik txt ”został utworzony po wykonaniu programu. Rozmiar pliku wynosi zero, ponieważ nie napisaliśmy żadnej treści w pliku.

Przykład 2: Napisz do pliku

W poprzednim przykładowym programie pokazaliśmy, jak otworzyć plik i jak zamknąć plik. Teraz pokażemy, jak napisać coś w pliku.

Możemy napisać do pliku za pomocą operatora wstawiania strumienia, i.mi., "<<”. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (“<<”) indicates that we are inserting the string into the output file stream object.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

Ofstream myfile_handler;
// plik otwarty
myfile_handler.Otwórz („File_1.tekst");
// zapisz do pliku
myfile_handler << "This is a sample test File. " << endl;
myfile_handler << "This is the second line of the file. " << endl;
// Zamknij plik
myfile_handler.zamknąć();
powrót 0;

Teraz skompilujemy powyższy program i wykonamy go. Jak widać poniżej, pomyślnie napisaliśmy do pliku plik_1.tekst.

Przykład 3: Przeczytaj z pliku

W poprzednich przykładach pokazaliśmy, jak pisać treść do pliku. Teraz przeczytajmy zawartość z pliku, który utworzyliśmy w przykładzie-2 i wyświetlmy zawartość na standardowym urządzeniu wyjściowym, i.mi., monitor.

Używamy funkcji getline () do odczytania pełnej linii z pliku, a następnie „cout”, aby wydrukować linię na monitorze.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

ifStream myfile_handler;
String myline;
// plik otworzy się w trybie odczytu
myfile_handler.Otwórz („File_1.tekst");
if (myfile_handler.jest otwarte())

// czytaj dalej plik
while (getline (myFile_Handler, myline))

// Wydrukuj linię na standardowym wyjściu
Cout << myLine << endl;

// Zamknij plik
myfile_handler.zamknąć();

w przeciwnym razie

Cout << "Unable to open the file!";

powrót 0;

Teraz wydrukujemy zawartość pliku_1.TXT za pomocą następującego polecenia: cat file_1.tekst. Po skompilowaniu i wykonaniu programu jasne jest, że wyjście pasuje do zawartości pliku. Dlatego pomyślnie odczytowaliśmy plik i wydrukowaliśmy zawartość pliku do monitora.

Przykład 4: Przeczytaj i zapisz do pliku

Do tej pory pokazaliśmy, jak otwierać, czytać, pisać i zamykać plik. W C ++ możemy również odczytać i zapisać do pliku w tym samym czasie. Aby przeczytać i napisać do pliku, musimy otrzymać obiekt fstream i otworzyć plik w trybie „iOS :: in” i „iOS :: out”.

W tym przykładzie najpierw zapisujemy trochę treści do pliku. Następnie odczytujemy dane z pliku i drukujemy je do monitora.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

fstream myfile_handler;
String myline;
// plik otwarty
myfile_handler.Otwórz („File_1.txt ", ios :: in | ios :: out);
// Sprawdź, czy plik się otworzył
Jeśli(!myfile_handler)

Cout << "File did not open!";
wyjście (1);

// zapisz do pliku
myfile_handler << "1. This is another sample test File. " << endl;
myfile_handler << "2. This is the second line of the file. " << endl;
myfile_handler.Seekg (iOS :: Beg);
// Przeczytaj plik
if (myfile_handler.jest otwarte())

// czytaj dalej plik
while (getline (myFile_Handler, myline))

// Wydrukuj linię na standardowym wyjściu
Cout << myLine << endl;

// Zamknij plik
myfile_handler.zamknąć();

w przeciwnym razie

Cout << "Unable to open the file!";

myfile_handler.zamknąć();
powrót 0;

Teraz skompilujemy i wykonamy program.

Przykład 5: Przeczytaj i zapisz do pliku binarnego

W tym przykładzie zadeklarujemy klasę, a następnie napisać obiekt do pliku binarnego. Aby uprościć ten przykład, zadeklarowaliśmy klasę pracowników za pomocą zmiennej publicznej emp_id. Następnie odczytujemy plik binarny i wydrukujemy wyjście do monitora.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
Pracownik klasy

publiczny:
int emp_id;
;
int main ()

Ofstream binoutFile_Handler;
ifstream bininfile_handler;
EmpObj_W, empobj_r;
// plik otwarty
binoutfile_handler.otwarty („pracownik.DAT ", iOS :: OUT | iOS :: Binary);
// Sprawdź, czy plik się otworzył
Jeśli(!binoutfile_handler)

Cout << "File did not open!";
wyjście (1);

// Zainicjuj empobj_w
empobj_w.emp_id = 1512;
// zapisz do pliku
binoutfile_handler.Write ((char *) i empobj_w, sizeof (pracownik));
binoutfile_handler.zamknąć();
Jeśli(!binoutfile_handler.Dobry())

Cout << "Error occured during writing the binary file!" << endl;
wyjście (2);

// Teraz przeczytajmy pracownika.plik danych
bininfile_handler.otwarty („pracownik.DAT ", ios :: w | ios :: binary);
// Sprawdź, czy plik się otworzył
Jeśli(!bininfile_handler)

Cout << "File did not open!";
wyjście (3);

// Przeczytaj zawartość pliku binarnego
bininfile_handler.czytaj ((char *) i empobj_r, sizeof (pracownik));
bininfile_handler.zamknąć();
Jeśli(!bininfile_handler.Dobry())

Cout << "Error occured during reading the binary file!" << endl;
wyjście (4);

// Wydrukuj wyjście EMPOBJ_R
Cout << "Details of the Employee : " << endl;
Cout << "Employee ID : " << empObj_R.emp_id << endl;
powrót 0;

Wniosek

Pliki służą głównie do przechowywania danych i odgrywają ważną rolę w programowaniu rzeczywistym. W tym artykule pokazaliśmy, jak korzystać z różnych operacji plików z językiem programowania C ++, pracując nad kilkoma przykładami. Ponadto pokazaliśmy, jak odczytać i zapisywać dane zarówno w plikach tekstowych, jak i plikach binarnych.