Program C ++ do korzystania z klasy ifStream powinien zacząć się następująco:
#włączaćPierwsza linia zawiera nagłówek, który ma definicję klasy ifstream. Druga linia zawiera nagłówek iostream, który ma obiekt Cout do drukowania wyjścia na terminalu (konsolę). Trzeci wiersz jest stwierdzeniem, a nie dyrektywa. Standardowa przestrzeń nazw to każda nazwa, a następnie „STD:;”.
W tym artykule wyjaśniono użycie klasy ifStream nagłówka fstream, aby obsłużyć dane wejściowe z pliku w dysku do uruchomionego programu. Wejście to znaki sekwencji, które przechodzą do bufora w pamięci przed osiągnięciem programu. Innymi słowy, ten artykuł wyjaśnia, jak odczytać plik tekstowy z dysku, w C++.
Tworzenie obiektu ifstream
Aby odczytać zawartość pliku na dysku, obiekt IfStream musi zostać utworzony instancją z klasy ifStream. Konstruktory powszechnie stosowane przez programistów anglosaskich (w tym zachodniej Europy) to:
basic_ifstream ();Prefiks „Basic_” można pominąć dla wszystkich trzech składni. Użycie pierwszej składni tutaj zostanie zilustrowane w następnej sekcji. W drugiej składni pierwszym argumentem jest string literał lub tablica znaków kończących się w „\ 0”. Ten ciąg jest ścieżką katalogu i nazwy pliku, e.G. „DIR1/TXTFILE.txt ”, zakładając, że program znajduje się w katalogu domowym/użytkownika. W przypadku drugiej składni pierwszy argument jest taki sam jak pierwszy argument poprzedniej składni, ale jest to ciąg klasy String (nagłówek). W obu składniach drugim argumentem powinien być „iOS_Base :: w”, gdzie „w” środkach do czytania (wejście).
Ilustracja
Oświadczenie budowlane dla drugiej składni jest następujące:
ifStream IFS = ifStream ("Dir1/txtFile.txt ", ios_base :: in);Nazwa pliku, którego treść ma być odczytana, brzmi: „TXTFILE.tekst". Po tej instrukcji plik „TXTFILE.txt ”jest uważany za otwarty w programie działającym. Po otwarciu pliku sekwencja kolejnych znaków, które reprezentują plik, jest w pamięci do kontroli bufora.
Segment kodu konstrukcyjnego dla trzeciej składni to:
String str = "dir1/txtFile.tekst";W każdej sytuacji IFS jest obiektem ifstream otwartego pliku. W przypadku typu ciągu nie zapomnij uwzględnić klasy String (nagłówka) do programu w następujący sposób:
#włączaćOtwieranie pliku
Mówi się, że plik jest otwarty, gdy sekwencja kolejnych znaków pliku reprezentująca plik jest w pamięci do kontroli bufora. Druga i trzecia składnia konstrukcyjne powyżej otwierają plik do odczytu, ale pierwsza składnia nie. Oznacza to, że druga i trzecia składnia dokonują instancji obiektu ifstream i otwieranie pliku. Obiekt IFS może zostać utworzony z klasy ifStream za pomocą pierwszej składni z instrukcją:
ifStream ifs;W takim przypadku obiekt pliku został utworzony, ale plik nie został jeszcze otwarty. Aby otworzyć plik do odczytu, należy użyć funkcji otwartego członka klasy ifStream. Metody przeciążone otwarte () powszechnie stosowane przez programistów anglosaskich (w tym zachodniej Europy) to:
void Open (const char* s, ios_base :: openMode Mode = ios_base :: in);Zauważ, że stwierdzenie budowlane „ifstream ifs;” nie wspomina żadnego pliku na dysku. I tak pierwsze i drugie argumenty tych funkcji otwartego () mają takie same znaczenie jak odpowiednio dla drugiej i trzeciej składni konstrukcyjnych powyżej.
Ilustracja
Zastosowanie funkcji pierwszego członka otwartego () tutaj (w tej sekcji) można zilustrować w następujący sposób:
ifStream ifs;Zastosowanie funkcji drugiego członka Open () tutaj (w tej sekcji) można zilustrować w następujący sposób:
ifStream ifs;Różnica w dwóch segmentach kodu to sposób, w jaki konstruuje się ciąg ścieżki i nazwy pliku.
Czy plik został otwarty?
Mówi się, że plik jest otwarty, gdy sekwencja kolejnych znaków pliku reprezentująca plik jest w pamięci dla kontroli bufora. Co jeśli ścieżka i/lub nazwa pliku była błędna? Co jeśli plik nie można otworzyć, ponieważ dysk był zły, a jego sektory nie można odczytać? Wskazane jest, aby zawsze sprawdzać, czy plik został otwarty za pomocą składni:
bool is_open () const;is_open () jest funkcją członkowską klasy ifStream. Zwraca prawdę, jeśli plik został pomyślnie otwarty, a w przeciwnym razie fałsz. Poniższy segment kodu ilustruje użycie tej funkcji członka:
ifStream ifs;Wyjście powinno być:
Plik jest otwarty.Zamknięcie pliku
Plik powinien zostać zamknięty po otwarciu. Działanie zamykające zatrzymuje bufor w pamięci, uwalniając przestrzeń pamięci na inne działania. Łamie również połączenie wykonane z plikiem na dysku. ifStream ma funkcję członka blisko (), aby zamknąć otwarty plik. Składnia to:
void Close ();Poniższy segment kodu ilustruje jego użycie:
ifStream IFS = ifStream ("Dir1/txtFile.txt ", ios_base :: in);Wyjście to:
Otwarty plik został zamknięty.Plik powinien być używany, gdy programista jest pewien, że został otwarty, a następnie zamknięty.
Czytanie postaci jeden po drugim
ifStream ma funkcję członka, której składnią jest:
Basic_istreamKiedy otrzyma następny znak, umieszcza ją w zmiennej C i zwraca obiekt IfStream odziedziczony po podstawowej. Wewnętrzny wskaźnik ifstream wskazuje na następną postać do następnego czytania. Po osiągnięciu końca pliku, zwrócony obiekt jest przekonwertowany na false.
Poniższy segment kodu odczytuje wszystkie znaki w pliku jeden po drugim i wysyła każdy do terminala (konsolę):
Char C;C należy najpierw zadeklarować. C jest argumentem get (), który jest funkcją członkowską obiektu ifstream. Jedyne proste stwierdzenie (cout << c;) of the while compound statement sends a copy of the character to the output.
Zamiast wysyłać znaki do wyjścia, można je wysłać do obiektu ciągów, tworząc długi ciąg w następujący sposób:
Char C;W takim przypadku nagłówek sznurka (biblioteka) musi zostać włączony do programu.
Poniższy program odczytuje całą zawartość pliku i wyświetla go:
#włączaćWniosek
Klasa ifstream nagłówka fstream obsługuje dane wejściowe z pliku z dysku do uruchomionego programu. Aby utworzyć obiekt ifStream, użyj dowolnej składni:
basic_ifstream ();Jeśli używana jest pierwsza składnia, obiekt nadal musi zostać otwarty, z dowolną z następujących składni funkcji członka:
void Open (const char* s, ios_base :: openMode Mode = ios_base :: in);Aby wiedzieć, czy plik zostanie pomyślnie otwarty, użyj składni funkcji członka:
bool is_open () const;Obiekt ifstream musi być zamknięty po użyciu.
Aby odczytać postacie jeden po drugim, użyj w pętli, składnię funkcji członka:
Basic_istream