W tym artykule pokażemy, jak czytać i zapisywać do pliku w języku programowania C++ na kilku przykładach. Aby zrozumieć operacje na plikach C++, takie jak odczyt i zapis, 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 odczytywania danych z zewnętrznego urządzenia wejściowego, takiego jak klawiatura, a strumień wyjściowy służy do zapisywania danych na zewnętrznym urządzeniu wyjściowym, takim jak monitor. Plik można traktować zarówno jako źródło wejściowe, jak i wyjściowe output.
W C++ używamy strumienia do wysyłania lub odbierania danych do lub z zewnętrznego źródła.
Możemy użyć wbudowanych klas, aby uzyskać dostęp do strumienia wejścia/wyjścia, i.mi., „ios”.
Oto hierarchia klas strumieni języka programowania C++:
Obiekty „cin” i „cout” służą odpowiednio do odczytywania danych z klawiatury i wyświetlania wyjścia na monitorze. Ponadto „ifstream”, co oznacza „strumień pliku wejściowego”, służy do odczytu strumienia danych z pliku, a „ofstream”, co oznacza „strumień pliku wyjściowego”, służy do zapisywania strumienia danych do pliku.
„jostram.h” zawiera wszystkie wymagane standardowe klasy strumieni wejścia/wyjścia w języku programowania C++.
Przykłady
Teraz, gdy znasz już podstawy strumieni, omówimy następujące przykłady, które pomogą Ci lepiej zrozumieć operacje na plikach w C++:
- Przykład 1: Otwórz i zamknij plik
- Przykład 2: Napisz do pliku
- Przykład 3: Czytaj z pliku
- Przykład 4: Odczytywanie i zapisywanie do pliku
- Przykład 5: Odczyt i zapis 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, zawarliśmy bibliotekę wymaganą do operacji na plikach.
Aby otworzyć i zamknąć plik, potrzebujemy obiektu ofstream. Następnie, aby odczytać lub zapisać do pliku, musimy go otworzyć. Dodaliśmy plik nagłówkowy fstream w wierszu numer 1, dzięki czemu możemy uzyskać dostęp do klasy stream.
Zadeklarowaliśmy myFile_Handler jako obiekt ofstream wewnątrz funkcji main. Następnie możemy użyć funkcji open(), aby utworzyć pusty plik i funkcji close(), aby zamknąć plik.
#zawieraćprzy użyciu standardowej przestrzeni nazw;
int main()
ofstream myFile_Handler;
// Plik Otwórz
myFile_Handler.otwórz("Plik_1.tekst");
// Zamknij plik
myFile_Handler.blisko();
zwróć 0;
Teraz skompilujemy program i zbadamy wynik. Jak widać w oknie wyjściowym poniżej, „Plik_1.txt” został utworzony po uruchomieniu programu. Rozmiar pliku wynosi zero, ponieważ nie zapisaliśmy w nim żadnej treści.
Przykład 2: Napisz do pliku
W poprzednim przykładowym programie pokazaliśmy, jak otworzyć plik i jak go zamknąć. Teraz pokażemy Ci, jak napisać coś w pliku.
Możemy pisać 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.
#zawieraćprzy użyciu standardowej przestrzeni nazw;
int main()
ofstream myFile_Handler;
// Plik Otwórz
myFile_Handler.otwórz("Plik_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.blisko();
zwróć 0;
Teraz skompilujemy powyższy program i go wykonamy. Jak widać poniżej, pomyślnie zapisaliśmy do pliku File_1.tekst.
Przykład 3: Czytaj z pliku
W poprzednich przykładach pokazaliśmy, jak zapisywać zawartość do pliku. Teraz przeczytajmy zawartość 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(), aby odczytać całą linię z pliku, a następnie „cout”, aby wydrukować linię na monitorze.
#zawierać#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
int main()
ifstream myFile_Handler;
ciąg myLine;
// Plik Otwórz w trybie odczytu
myFile_Handler.otwórz("Plik_1.tekst");
if(myFile_Handler.jest otwarte())
// Czytaj dalej plik
while(getline(myFile_Handler, myLine))
// wypisz linię na standardowym wyjściu
Cout << myLine << endl;
// Zamknij plik
myFile_Handler.blisko();
jeszcze
Cout << "Unable to open the file!";
zwróć 0;
Teraz wydrukujemy zawartość File_1.txt za pomocą następującego polecenia: cat File_1.tekst. Gdy skompilujemy i uruchomimy program, jasne jest, że dane wyjściowe są zgodne z zawartością pliku. Dlatego pomyślnie odczytaliśmy plik i wydrukowaliśmy zawartość pliku na monitorze.
Przykład 4: Odczytywanie i zapisywanie do pliku
Do tej pory pokazaliśmy, jak otwierać, czytać, pisać i zamykać plik. W C++ możemy jednocześnie czytać i zapisywać do pliku. Aby zarówno czytać, jak i pisać do pliku, musimy pobrać obiekt fstream i otworzyć plik w trybie „ios::in” i „ios::out”.
W tym przykładzie najpierw zapisujemy zawartość do pliku. Następnie odczytujemy dane z pliku i wyświetlamy je na monitorze.
#zawierać#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
int main()
fstream myFile_Handler;
ciąg myLine;
// Plik Otwórz
myFile_Handler.otwórz("Plik_1.txt", ios::in | ios::out);
// Sprawdź, czy plik został otwarty
gdyby(!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::błagaj);
// Przeczytaj plik
if(myFile_Handler.jest otwarte())
// Czytaj dalej plik
while( getline(myFile_Handler, myLine))
// wypisz linię na standardowym wyjściu
Cout << myLine << endl;
// Zamknij plik
myFile_Handler.blisko();
jeszcze
Cout << "Unable to open the file!";
myFile_Handler.blisko();
zwróć 0;
Teraz skompilujemy i uruchomimy program.
Przykład 5: Odczyt i zapis do pliku binarnego
W tym przykładzie zadeklarujemy klasę, a następnie zapiszemy obiekt do pliku binarnego. Aby uprościć ten przykład, zadeklarowaliśmy klasę Employee ze zmienną publiczną emp_id. Następnie odczytamy plik binarny i wydrukujemy dane wyjściowe na monitorze.
#zawierać#zawierać
przy użyciu standardowej przestrzeni nazw;
Klasa Pracownik
publiczny:
int emp_id;
;
int main()
ofstream binOutFile_Handler;
ifstream binInFile_Handler;
Pracownik empObj_W, empObj_R;
// Plik Otwórz
binOutFile_Handler.open("Pracownik.dat", ios::out | ios::binary);
// Sprawdź, czy plik został otwarty
gdyby(!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 *) &empObj_W, sizeof(Pracownik));
binOutFile_Handler.blisko();
gdyby(!binOutFile_Handler.dobrze())
Cout << "Error occured during writing the binary file!" << endl;
wyjście(2);
// Teraz przeczytajmy pracownika.plik danych
binInFile_Handler.open("Pracownik.dat", ios::in | ios::binarny);
// Sprawdź, czy plik został otwarty
gdyby(!binInFile_Handler)
Cout << "File did not open!";
wyjście(3);
// Odczytaj zawartość pliku binarnego
binInFile_Handler.read((char *) &empObj_R, sizeof(Pracownik));
binInFile_Handler.blisko();
gdyby(!binInFile_Handler.dobrze())
Cout << "Error occured during reading the binary file!" << endl;
wyjście(4);
// Wydrukuj wynik empObj_R
Cout << "Details of the Employee : " << endl;
Cout << "Employee ID : " << empObj_R.emp_id << endl;
zwróć 0;
Wniosek
Pliki służą głównie do przechowywania danych i odgrywają ważną rolę w programowaniu w świecie rzeczywistym. W tym artykule pokazaliśmy, jak korzystać z różnych operacji na plikach w języku programowania C++ na kilku przykładach. Ponadto pokazaliśmy, jak odczytywać i zapisywać dane zarówno w plikach tekstowych, jak i binarnych.