file input output operations c
Studium na temat operacji wejścia na plik i wyjścia i funkcji wskaźnika pliku w C ++.
W programowaniu w czasie rzeczywistym mamy do czynienia z dużymi porcjami danych, których nie można pomieścić ze standardowych urządzeń wejścia-wyjścia. Dlatego do przechowywania danych musimy skorzystać z dodatkowej pamięci. Korzystając z pamięci dodatkowej zazwyczaj przechowujemy dane w postaci plików.
Możemy odczytywać dane z plików lub zapisywać dane do plików przy użyciu sekwencji danych zwanych strumieniami w formacie tekstowym lub binarnym. Istnieją różne operacje wejścia / wyjścia i inne operacje związane z plikami w C ++. Ten samouczek wyjaśnia te operacje związane z plikami używającymi różnych klas.
![]()
Czego się nauczysz:
Klasy wejścia / wyjścia plików w C ++
W C ++ widzieliśmy klasę iostream, która definiuje standardowe funkcje wejścia i wyjścia, w tym cin i cout. Ta klasa jest ograniczona do standardowych urządzeń wejściowych i wyjściowych, takich jak klawiatura i monitor.
Jeśli chodzi o operacje na plikach, C ++ ma inny zestaw klas, których można użyć.
Klasy te opisano poniżej:
- Ofstream: Klasa obsługi plików, która określa strumień pliku wyjściowego i służy do zapisywania danych do plików.
- Ifstream: Klasa obsługi plików, która oznacza strumień pliku wejściowego i służy do odczytu danych z pliku.
- Fstream: Klasa obsługi plików, która może obsługiwać zarówno ifstream, jak i ofstream. Może służyć do odczytu i zapisu do pliku.
W obsłudze plików C ++ obsługiwane są następujące operacje:
- Otworzyć plik
- Zamknij plik
- Czytaj z pliku
- Napisz do pliku
Przyjrzyjmy się szczegółowo każdej z tych operacji !!
Otworzyć plik
Skojarzenie obiektu jednej z klas strumienia z plikiem do odczytu lub zapisu lub obu jest nazywane otwieraniem pliku. Otwarty plik jest reprezentowany w kodzie przy użyciu tego obiektu strumienia. Zatem każda operacja odczytu / zapisu wykonana na tym obiekcie strumienia zostanie zastosowana również do pliku fizycznego.
Ogólna składnia otwierania pliku ze strumieniem to:
void open(const char* filename, ios::open mode mode)
Tutaj,
filename => Ciąg znaków zawierający ścieżkę i nazwę pliku do otwarcia.
mode => Opcjonalny parametr wskazujący tryb, w którym plik ma zostać otwarty.
C ++ obsługuje różne tryby otwierania pliku. Możemy również określić kombinację tych trybów za pomocą operatora OR.
Tryb plików Opis ios :: in Otwiera plik w trybie wejściowym do odczytu. ios :: out Otwiera plik w trybie wyjściowym do zapisywania danych do pliku. ios :: ate Ustaw początkową pozycję na końcu pliku. Jeśli flaga końca pliku nie jest ustawiona, początkowa pozycja jest ustawiana na początek pliku. ios :: trunc Jeśli plik jest otwarty do zapisu i ma już zawartość, zawartość jest obcięta. ios :: app Otwiera plik w trybie dołączania, tak że cała zawartość jest dołączana na końcu pliku. ios :: binarny Otwiera plik w trybie binarnym. Na przykład,jeśli chcemy otworzyć plik „myfile.dat” do dołączania danych w trybie binarnym, możemy napisać następujący kod.
j2ee wywiad pytania i odpowiedzi pdfofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Jak już wspomniano, parametr trybu jest opcjonalny. Kiedy otwieramy plik bez określenia drugiego parametru, otwarta funkcja składowa ofstream, ifstream lub fstream ma domyślny tryb otwierania pliku.
Są one podane w następujący sposób:
Klasa Tryb domyślny Ifstream ios :: in ofstream ios :: out Fstream ios :: in | ios :: out Jeśli więc nie określimy drugiego parametru w funkcji open, w zależności od użytej klasy strumienia, plik zostanie otwarty w trybie domyślnym.
Zamykanie pliku
Możemy użyć funkcji close, aby zamknąć plik i zwolnić zasoby przechowywane przez plik, gdy skończymy z operacjami wejścia i wyjścia na pliku.
Funkcja zamykania pliku to:
void close()
Kiedy więc zakończymy operacje na powyższym pliku myfile, możemy zamknąć plik w następujący sposób:
myfile.close();
Po zamknięciu pliku za pomocą funkcji close skojarzony obiekt pliku można ponownie wykorzystać do otwarcia innego pliku.
Czytanie z pliku
Możemy odczytać informacje z pliku wiersz po wierszu za pomocą operatora wyodrębniania strumienia (>>). Jest to podobne do odczytu wejścia ze standardowego wejścia za pomocą cin. Jedyna różnica polega na tym, że w przypadku plików używamy obiektu ifstream lub fstream zamiast cin.
Przykładowy kod do odczytu z pliku jest podany poniżej:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<
W powyższym kodzie otwieramy plik i za pomocą operatora wyodrębniania strumienia (>>) odczytujemy zawartość pliku. Po przeczytaniu możemy zamknąć plik.
Pisanie do pliku
Możemy również zapisywać dane do pliku za pomocą operacji na plikach. Operator, którego używamy do zapisywania danych do pliku, to operator wstawiania strumienia (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Rozważmy następujący przykładowy kod:
char data[100]; ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<
Tutaj czytamy wiersz z wejścia i zapisujemy go do pliku, który został otwarty za pomocą obiektu ofstream.
W poniższym przykładzie kodu przedstawiamy wszystkie operacje obsługi plików.
#include #include using namespace std; int main () { char data[100]; // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Wynik:
Zapisywanie do pliku
Wpisz swoje imię i nazwisko: Ved
Podaj swój wiek: 7
Czytanie z pliku
Przez
7W powyższym programie najpierw otwieramy plik w trybie zapisu. Następnie odczytujemy dane tj. Imię i wiek i zapisujemy je do pliku. Następnie zamykamy ten plik. Następnie otwieramy ten sam plik w trybie odczytu i czytamy dane wiersz po wierszu z pliku i wyświetlamy je na ekranie.
Dlatego program ten obejmuje wszystkie operacje we / wy pliku.
Żużle stanu pliku
Istnieje kilka funkcji składowych, które są używane do sprawdzania stanu pliku. Wszystkie te funkcje zwracają wartość logiczną.
Tabelaryzowaliśmy te funkcje w następujący sposób:
Funkcjonować Opis eof () Zwraca wartość true, jeśli podczas odczytu pliku osiągnięto koniec pliku. zawieść() Zwraca wartość true, gdy operacja odczytu / zapisu nie powiedzie się lub wystąpi błąd formatu zły() Zwraca wartość true, jeśli odczyt lub zapis do pliku nie powiedzie się. dobrze() Zwraca fałsz w tych samych przypadkach, w których wywołanie którejkolwiek z powyższych funkcji zwróciło prawdę. Get / Put i inne operacje specjalne
Strumienie we / wy pliku, które widzieliśmy do tej pory, mają wewnętrzne pozycje pobierania i wstawiania podobne do innych strumieni we / wy, takich jak iostream.
pytania do rozmów kwalifikacyjnych dotyczących programowania C ++Klasa ifstream ma wewnętrzną pozycję get, która zawiera lokalizację elementu / znaku do odczytania w pliku podczas następnej operacji wejściowej. Klasa ofstream ma wewnętrzną pozycję put, która zawiera lokalizację elementu / znaku, który ma zostać zapisany w następnej operacji wyjściowej.
Nawiasem mówiąc, fstream ma zarówno pozycje get, jak i put.
Aby ułatwić czytanie i pisanie przy użyciu tych pozycji, mamy kilka funkcji składowych, które są używane do obserwowania i modyfikowania tych pozycji.
Te funkcje są wymienione poniżej:
Funkcje Opis tellg () Zwraca bieżącą pozycję wskaźnika pobierania tellp () Zwraca bieżącą pozycję wskaźnika put seekg (pozycja) Przenosi wskaźnik do określonej lokalizacji licząc od początku pliku seekg (przesunięcie, kierunek) Ruchy pobierają wskaźnik do wartości odsunięcia względem punktu określonego przez kierunek parametru. seekp (pozycja) Przenosi umieścić wskaźnik do określonej lokalizacji licząc od początku pliku seekp (przesunięcie, kierunek) Ruchy umieszczają wskaźnik na wartość odsunięcia względem punktu określonego przez kierunek parametru. Parametr kierunek podane w powyższych prototypach funkcji to plik wyliczone rodzaj typu seekdir i określa punkt, od którego liczone jest przesunięcie.
Może mieć następujące wartości.
ios :: błagam Odsunięcie od początku strumienia ios :: cur Odsunięcie od aktualnej pozycji ios :: end Odsunięcie od końca strumienia Zobaczmy pełny przykład, który demonstruje użycie tych funkcji.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'<
Wynik:
Utworzono nowy plik
Początkowa pozycja wskaźnika pliku: 34
Po seekp (-1, ios :: cur), pozycja wskaźnika pliku pod adresem: 33
Po seekg (5, ios :: beg), File Pointer at: 5
Po seekg (1, ios :: cur), File Pointer at: 6
Jak pokazano w powyższym programie, mamy utworzony plik, w którym piszemy wiersz tekstu. Następnie, używając różnych funkcji opisanych powyżej, wyświetlamy różne pozycje wskaźnika pliku.
Wniosek
W tym samouczku widzieliśmy różne operacje na plikach służące do otwierania, zamykania i odczytywania / zapisywania danych z / do pliku.
Widzieliśmy również funkcje zmiany wskaźnika pliku w celu uzyskania dostępu do określonych pozycji w pliku. W naszych kolejnych samouczkach omówimy kilka ważniejszych tematów związanych z C ++.
=> Przeczytaj serię szkoleń Easy C ++.
rekomendowane lektury
- Podstawowe operacje wejścia / wyjścia w C ++
- Wejście-wyjście i pliki w Pythonie (Python Open, Read and Write to File)
- Podstawowe operacje we / wy w języku Java (strumienie wejścia / wyjścia)
- Manipulacja plikami w Uniksie: Przegląd systemu plików Unix
- Uniksowe znaki specjalne lub metaznaki do manipulacji plikami
- Uprawnienia dostępu do plików w systemie Unix: Unix Chmod, Chown i Chgrp
- Obiekty plików VBScript: CopyFile, DeleteFile, OpenTextFile, odczyt i zapis pliku tekstowego
- Wdrażanie Java: tworzenie i wykonywanie pliku Java JAR