C++

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

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

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

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.

Gry Najlepsze gry wiersza poleceń dla systemu Linux
Najlepsze gry wiersza poleceń dla systemu Linux
Wiersz poleceń jest nie tylko twoim największym sprzymierzeńcem podczas korzystania z Linuksa - może być również źródłem rozrywki, ponieważ możesz go ...
Gry Najlepsze aplikacje do mapowania gamepada dla systemu Linux
Najlepsze aplikacje do mapowania gamepada dla systemu Linux
Jeśli lubisz grać w gry na Linuksie za pomocą gamepada zamiast typowego systemu wprowadzania klawiatury i myszy, jest kilka przydatnych aplikacji dla ...
Gry Przydatne narzędzia dla graczy Linuksa
Przydatne narzędzia dla graczy Linuksa
Jeśli lubisz grać w gry w systemie Linux, prawdopodobnie używałeś aplikacji i narzędzi, takich jak Wine, Lutris i OBS Studio, aby poprawić wrażenia z ...