C++ Obsługa plików: jak otwierać, zapisywać, czytać i zamykać pliki C++
Na czym polega obsługa plików C++?
Pliki przechowują dane trwale w urządzeniu pamięci masowej. Dzięki obsłudze plików dane wyjściowe programu mogą być przechowywane w pliku. Różne operacje mogą być wykonywane na danych, gdy znajdują się w pliku.
Strumień jest abstrakcją urządzenia, w którym wykonywane są operacje wejścia/wyjścia. Strumień można przedstawić jako miejsce docelowe lub źródło znaków o nieokreślonej długości. Będzie to określone przez ich użycie. C++ udostępnia bibliotekę zawierającą metody obsługi plików. Omówmy to.
Biblioteka fstream
Biblioteka fstream udostępnia C++ programiści z trzema klasami do pracy z plikami. Zajęcia te obejmują:
- poza strumieniem– Ta klasa reprezentuje strumień wyjściowy. Służy do tworzenia plików i zapisywania informacji w plikach.
- jeśli strumień– Ta klasa reprezentuje strumień wejściowy. Służy do odczytywania informacji z plików danych.
- fstream– Ta klasa ogólnie reprezentuje strumień plików. Posiada funkcje ofstream/ifstream. Oznacza to, że jest w stanie tworzyć pliki, zapisywać do plików, czytać z plików danych.
Poniższy obrazek ułatwia zrozumienie:
Aby skorzystać z powyższych klas biblioteki fstream, musisz dołączyć ją do swojego programu jako plik nagłówkowy. Oczywiście użyjesz dyrektywy preprocesora #include. Musisz także dołączyć plik nagłówkowy iostream.
Jak otwierać pliki
Przed wykonaniem jakiejkolwiek operacji na pliku, musisz go najpierw otworzyć. Jeśli musisz zapisać do pliku, otwórz go za pomocą obiektów fstream lub ofstream. Jeśli musisz tylko odczytać plik, otwórz go za pomocą obiektu ifstream.
Trzy obiekty, to znaczy fstream, ofstream i ifstream, mają zdefiniowaną funkcję open(). Funkcja przyjmuje następującą składnię:
open (file_name, mode);
- Parametr nazwa_pliku określa nazwę pliku do otwarcia.
- Parametr mode jest opcjonalny. Może przyjmować dowolną z następujących wartości:
wartość | Opis |
---|---|
ios:: aplikacja | Tryb dodawania. Dane wyjściowe wysłane do pliku są do niego dołączane. |
ios::zjadłem | Otwiera plik w celu uzyskania danych wyjściowych, a następnie przenosi kontrolę odczytu i zapisu na koniec pliku. |
ios::w | Otwiera plik do odczytu. |
ios::wyjście | Otwiera plik do zapisu. |
ios::trunc | Jeżeli plik istnieje, jego elementy należy obciąć przed jego otwarciem. |
Można używać dwóch trybów jednocześnie. Łączysz je za pomocą operatora | (OR).
1 przykład:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do programu, aby móc korzystać z jego funkcji.
- Dołącz plik nagłówkowy fstream do programu, aby móc korzystać z jego klas.
- Dołącz przestrzeń nazw std do naszego kodu, aby używać jej klas bez wywoływania jej.
- Wywołaj funkcję main(). Logika programu powinna znajdować się w jego ciele.
- Utwórz obiekt klasy fstream i nadaj mu nazwę mój_plik.
- Zastosuj funkcję open() na powyższym obiekcie, aby utworzyć nowy plik. Tryb out pozwala nam na zapis do pliku.
- Użyj instrukcji if, aby sprawdzić, czy utworzenie pliku nie powiodło się.
- Komunikat do wydrukowania na konsoli, jeśli plik nie został utworzony.
- Koniec treści instrukcji if.
- Użyj instrukcji else, aby określić, co zrobić, jeśli plik został utworzony.
- Komunikat do wydrukowania na konsoli, jeśli plik został utworzony.
- Zastosuj funkcję Close() na obiekcie, aby zamknąć plik.
- Koniec treści instrukcji else.
- Program musi zwrócić wartość, jeśli zakończy się pomyślnie.
- Koniec treści funkcji main().
Jak zamknąć pliki
Raz a C++ program zakończy się, nastąpi to automatycznie
- przepłukuje strumienie
- zwalnia przydzieloną pamięć
- zamyka otwarte pliki.
Jednakże jako programista powinieneś nauczyć się zamykać otwarte pliki przed zakończeniem działania programu.
Obiekty fstream, ofstream i ifstream posiadają funkcję close() służącą do zamykania plików. Funkcja przyjmuje następującą składnię:
void close();
Jak pisać do plików
Możesz pisać do pliku bezpośrednio z pliku C++ program. W tym celu należy użyć operatora wstawiania strumienia (<<). Tekst, który ma zostać zapisany do pliku, powinien być ujęty w cudzysłowy.
Zademonstrujmy to.
2 przykład:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do programu, aby móc korzystać z jego funkcji.
- Dołącz plik nagłówkowy fstream do programu, aby móc korzystać z jego klas.
- Dołącz przestrzeń nazw std do programu, aby używać jej klas bez wywoływania jej.
- Wywołaj funkcję main(). Logikę programu należy dodać w treści tej funkcji.
- Utwórz instancję klasy fstream i nadaj jej nazwę mój_plik.
- Użyj funkcji open(), aby utworzyć nowy plik o nazwie mój_plik.txt. Plik zostanie otwarty w trybie wyjściowym w celu zapisania do niego.
- Użyj instrukcji if, aby sprawdzić, czy plik nie został otwarty.
- Tekst do wydrukowania na konsoli, jeśli plik nie zostanie otwarty.
- Koniec treści instrukcji if.
- Użyj instrukcji else, aby określić, co zrobić, jeśli plik został utworzony.
- Tekst do wydrukowania na konsoli, jeśli plik został utworzony.
- Napisz jakiś tekst do utworzonego pliku.
- Użyj funkcji close(), aby zamknąć plik.
- Koniec treści instrukcji else.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main().
Jak czytać z plików
Możesz czytać informacje z plików do swojego C++ program. Jest to możliwe przy użyciu operatora ekstrakcji strumienia (>>). Operatora używa się w taki sam sposób, w jaki używa się go do odczytywania danych wejściowych użytkownika z klawiatury. Jednak zamiast używać obiektu cin, używa się obiektu ifstream/ fstream.
3 przykład:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Wyjście:
Nie ma takiego pliku
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do programu, aby móc korzystać z jego funkcji.
- Dołącz plik nagłówkowy fstream do programu, aby móc korzystać z jego klas.
- Dołącz przestrzeń nazw std do programu, aby używać jej klas bez wywoływania jej.
- Wywołaj funkcję main(). Logikę programu należy dodać w treści tej funkcji.
- Utwórz instancję klasy fstream i nadaj jej nazwę mój_plik.
- Użyj funkcji open(), aby utworzyć nowy plik o nazwie mój_plik.txt. Plik zostanie otwarty w trybie in w celu odczytania z niego.
- Użyj instrukcji if, aby sprawdzić, czy plik nie istnieje.
- Tekst do wydrukowania na konsoli, jeśli plik nie zostanie znaleziony.
- Koniec treści instrukcji if.
- Użyj instrukcji else, aby określić, co zrobić, jeśli plik zostanie znaleziony.
- Stwórz zmienna char o nazwie rozdz.
- Stwórz pętla while do iteracji po zawartości pliku.
- Zapisz/zapisz zawartość pliku w zmiennej ch.
- Użyj warunku if i funkcji eof(), czyli końca pliku, aby mieć pewność, że kompilator będzie kontynuował czytanie z pliku, jeśli koniec nie zostanie osiągnięty.
- Użyj instrukcji break, aby zatrzymać czytanie pliku po osiągnięciu końca.
- Wydrukuj zawartość zmiennej ch na konsoli.
- Koniec ciała póki.
- Koniec treści instrukcji else.
- Wywołaj funkcję close(), aby zamknąć plik.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main().
Podsumowanie
- Dzięki obsłudze plików dane wyjściowe programu można wysłać i zapisać w pliku.
- Następnie można wykonać szereg operacji na danych znajdujących się w pliku.
- Strumień to abstrakcja reprezentująca urządzenie, w którym wykonywane są operacje wejścia/wyjścia.
- Strumień może być reprezentowany jako miejsce docelowe lub źródło znaków o nieokreślonej długości.
- Biblioteka fstream udostępnia C++ programistom metody obsługi plików.
- Aby skorzystać z biblioteki, musisz włączyć ją do swojego programu za pomocą dyrektywy preprocesora #include.