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
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.