Obsługa plików służy do trwałego przechowywania danych w komputerze. Korzystając z obsługi plików, możemy przechowywać nasze dane w pamięci dodatkowej (dysku twardym).
Jak osiągnąć obsługę plików
Aby uzyskać obsługę plików, musimy wykonać następujące kroki: -
KROK 1 – Nadanie nazwy plikowi
KROK 2 – Otwarcie pliku
KROK 3 – Zapisanie danych do pliku
KROK 4 – Odczyt danych z pliku
KROK 5 – Zamknięcie pliku.
Strumienie w C++ :-
Dajemy dane wejściowe programowi wykonującemu, a program wykonawczy zwraca dane wyjściowe. Sekwencja bajtów podana na wejściu programu wykonującego oraz sekwencja bajtów przychodząca na wyjściu programu wykonującego nazywa się strumieniem. Innymi słowy, strumienie to nic innego jak przepływ danych w sekwencji.
Operacje wejścia i wyjścia pomiędzy wykonywanym programem a urządzeniami takimi jak klawiatura i monitor nazywane są operacjami wejścia/wyjścia konsoli. Operacje wejścia i wyjścia pomiędzy wykonywanym programem a plikami nazywane są operacjami wejścia/wyjścia dysku.
Klasy dla operacji na strumieniu plików: -
System we/wy języka C++ zawiera zestaw klas definiujących metody obsługi plików. Należą do nich klasy ifstream, ofstream i fstream. Klasy te wywodzą się z fstream i odpowiedniej klasy iostream. Klasy te, przeznaczone do zarządzania plikami dyskowymi, są zadeklarowane w fstream i dlatego musimy dołączyć ten plik do dowolnego programu korzystającego z plików.
1. iOS:-
- ios oznacza wejściowy strumień wyjściowy.
- Ta klasa jest klasą bazową dla innych klas w tej hierarchii klas.
- Ta klasa zawiera niezbędne udogodnienia, które są używane przez wszystkie inne klasy pochodne do operacji wejścia i wyjścia.
2. istream:-
- istream oznacza strumień wejściowy.
- Klasa ta wywodzi się z klasy „ios”.
- Ta klasa obsługuje strumień wejściowy.
- Operator wyodrębniania (>>) jest w tej klasie przeciążony, aby obsługiwać strumienie wejściowe z plików do wykonania programu.
- Ta klasa deklaruje funkcje wejściowe, takie jak get(), getline() i read().
3. po drugiej stronie:-
- ostream oznacza strumień wyjściowy.
- Klasa ta wywodzi się z klasy „ios”.
- Ta klasa obsługuje strumień wyjściowy.
- Operator wstawiania (<<) jest przeciążony w tej klasie, aby obsługiwać strumienie wyjściowe do plików z wykonania programu.
- Ta klasa deklaruje funkcje wyjściowe, takie jak put() i write().
4. strumieńbuf:-
3d w autocadzie
- Klasa ta zawiera wskaźnik wskazujący bufor używany do zarządzania strumieniami wejściowymi i wyjściowymi.
5. fstreambase: -
- Ta klasa udostępnia operacje wspólne dla strumieni plików. Służy jako baza dla klas fstream, ifstream i ofstream.
- Klasa ta zawiera funkcje open() i Close().
6. ifstream: -
- Ta klasa udostępnia operacje wejściowe.
- Zawiera funkcję open() z domyślnym trybem wprowadzania.
- Dziedziczy funkcje get(), getline(), read(), search() i tellg() z istream.
7. strumień:-
- Ta klasa udostępnia operacje wyjściowe.
- Zawiera funkcję open() z domyślnym trybem wyjściowym.
- Dziedziczy funkcje put(), write(), search() i tellp() z ostream.
8. fstream:-
- Ta klasa zapewnia obsługę jednoczesnych operacji wejścia i wyjścia.
- Dziedziczy wszystkie funkcje z klas istream i ostream poprzez iostream.
9. plikbuf:-
- Jego celem jest ustawienie buforów plików do odczytu i zapisu.
- Możemy również użyć funkcji elementu bufora pliku, aby określić długość pliku.
W C++ pliki są obsługiwane głównie przy użyciu trzech klas fstream, ifstream i ofstream dostępnych w pliku nagłówkowym fstream.
poza strumieniem: Klasa strumieniowa do zapisu na plikach
jeśli strumień: Klasa strumieniowa do odczytu z plików
fstream: Klasa strumieniowa do odczytu i zapisu z/do plików.

Teraz pierwszy krok, aby otworzyć konkretny plik do operacji odczytu lub zapisu. Możemy otworzyć plik według
1. przekazanie nazwy pliku w konstruktorze w momencie tworzenia obiektu
2. stosując metodę otwartą
Dla np.
Otwórz plik za pomocą konstruktora
ifstream (const char* nazwa pliku, ios_base::openmode mode = ios_base::in);
ifstream fin (nazwa pliku, tryb otwarty) domyślnie openmode = ios::in
ifstream fin(nazwa pliku);Otwórz plik przy użyciu metody otwartej
Wywołanie domyślnego konstruktora
koniec strumienia if;
fin.open(nazwa pliku, tryb otwarty)
fin.open(nazwa pliku);
Tryby:
| Członek Stały | Oznacza | Dostęp |
|---|---|---|
| W * | wejście | Plik otwarty do odczytu: wewnętrzny bufor strumieniowy obsługuje operacje wejściowe. |
| na zewnątrz | wyjście | Plik otwarty do zapisu: wewnętrzny bufor strumieniowy obsługuje operacje wyjściowe. |
| dwójkowy | dwójkowy | Operacje są wykonywane w trybie binarnym, a nie w trybie tekstowym. |
| zjadł | na końcu | Pozycja wyjściowa zaczyna się na końcu pliku. |
| aplikacja | dodać | Wszystkie operacje wyjściowe odbywają się na końcu pliku i są dołączane do jego istniejącej zawartości. |
| pień | ścięty | Cała zawartość, która istniała w pliku przed jego otwarciem, zostanie odrzucona. |
Domyślne tryby otwarte:
| jeśli strumień | iOS::w |
| poza strumieniem | ios::wyjście |
| fstream | ios::w | ios::wyjście |
Oświadczenie o problemie : Aby odczytać i zapisać plik w C++.
Przykłady:
Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>
Poniżej implementacja za pomocą klasy ifstream i ofstream .
C++
/* File Handling with C++ using ifstream & ofstream class object*/> /* To write the Content in File*/> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> >fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> >// Creation of ofstream class object> >ofstream fout;> >string line;> >// by default ios::out mode, automatically deletes> >// the content of file. To append the content, open in ios:app> >// fout.open('sample.txt', ios::app)> >fout.open(>'sample.txt'>);> >// Execute a loop If file successfully opened> >while> (fout) {> >// Read a Line from standard input> >getline(cin, line);> >// Press -1 to exit> >if> (line ==>'-1'>)> >break>;> >// Write line in file> >fout << line << endl;> >}> >// Close the File> >fout.close();> >// Creation of ifstream class object to read the file> >ifstream fin;> >// by default open mode = ios::in mode> >fin.open(>'sample.txt'>);> >// Execute a loop until EOF (End of File)> >while> (getline(fin, line)) {> > >// Print line (read from file) in Console> >cout << line << endl;> >}> >// Close the file> >fin.close();> >return> 0;> }> |
>
>
Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(1)
Poniżej implementacja za pomocą klasa fstream .
C++
/* File Handling with C++ using fstream class object */> /* To write the Content in File */> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> >fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> >// Creation of fstream class object> >fstream fio;> >string line;> >// by default openmode = ios::in|ios::out mode> >// Automatically overwrites the content of file, To append> >// the content, open in ios:app> >// fio.open('sample.txt', ios::in|ios::out|ios::app)> >// ios::trunc mode delete all content before open> >fio.open(>'sample.txt'>, ios::trunc | ios::out | ios::in);> >// Execute a loop If file successfully Opened> >while> (fio) {> >// Read a Line from standard input> >getline(cin, line);> >// Press -1 to exit> >if> (line ==>'-1'>)> >break>;> >// Write line in file> >fio << line << endl;> >}> >// Execute a loop until EOF (End of File)> >// point read pointer at beginning of file> >fio.seekg(0, ios::beg);> >while> (fio) {> >// Read a Line from File> >getline(fio, line);> >// Print line in Console> >cout << line << endl;> >}> >// Close the file> >fio.close();> >return> 0;> }> |
>
>
Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(1)
C++
Q: write a single file handling program in c++ to reading and writing data on a file.> #include> #include> > using> namespace> std;> main()> {> >int> rno,fee;> >char> name[50];> > >cout<<>'Enter the Roll Number:'>;> >cin>>nie;> > >cout<<>'
Enter the Name:'>;> >cin>>imię;> > >cout<<>'
Enter the Fee:'>;> >cin>>opłata;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '/write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>rno>>nazwa>>opłata; //odczytaj dane z pliku student fin.close(); cout<' '<' '< return 0; }> |
>
>
Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)
C++
konwencje nazewnictwa Java
// Q: WA C++ file handling program to read data from the file called student.doc> #include> #include> using> namespace> std;> main()> {> >int> rno,fee;> >char> name[50];> > >ifstream fin(>'d:/student.doc'>);> > >fin>>rno>>nazwa>>opłata;>//read data from the file student> > >fin.close();> > >cout<' '<' '< return 0; }> |
>
>
Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(50)