C++ (4/4): Strumienie Plikowe fstream
Odczyt zadań z dysku. ifstream oraz ofstream pod lupą. Jak upewnić się, że program nie pomyli się przy wczytywaniu.
C++ (4/4): Wczytywanie i Zapis (fstream)
Doszliśmy do etapu integracji Twojej aplikacji z plikami rozesłanymi przez Centralną Komisję Egzaminacyjną (CKE). Do pracy z plikami na dysku twardym C++ używa biblioteki strumieni plików - <fstream> (File Stream).
1. Jak to rozumieć?
W 1 lekcji uczyliśmy się standardowych strumieni: cin >> (z klawiatury) i cout << (na monitor). fstream działa IDENTYCZNIE. Daje nam do dyspozycji:
ifstream(Input File Stream) -> odpowiednikcin >>, ale działa potajemnie na pliku w folderze!ofstream(Output File Stream) -> odpowiednikcout <<, ale "drukuje" wyniki do ukrytego pliku tekstowego na uśpionym dysku twardym, zamiast przed oczy!
2. Podstawowy Odczyt Pliku (Standard na Maturze)
Utworzymy pętlę, która wsysa słowa z pliku tak długo, aż dotknie dna pliku (ang. End of File - EOF).
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// 1. Deklaracja i otwarcie strumienia wejściowego (plik musi leżeć w tym samym folderze co skompilowany plik exe!)
ifstream plik("dane_maturalne.txt");
// Sprawdzamy zabezpieczenie. Co, jeśli zapomnieliśmy go przenieść i program go nie znalazł?
if (!plik.good()) {
cout << "BŁĄD: Nie znaleziono pliku! Wrzuciles go obok *.exe?" << endl;
return 1; // Zwróć 1 (błąd dla systemu Windows).
}
string linijka;
int licznik = 0;
// 2. Petla While - Magiczna Komenda C++
// Warunek mowi: "Wsysaj strzalkami >> z obiektu 'plik' prosto w zmienna 'linijka'.
// Rob to dopoki (while) akcja ta w ogole dziala i jest udana."
while (plik >> linijka) {
// Zrob cos ze wczytanym slowem, np. wyswietl pierwsze 5
if (licznik < 5) {
cout << "Pobralem slowo: " << linijka << endl;
}
licznik++;
}
// 3. WAZNE: Zawsze na koniec posprzataj biurko. Zamknij ksiazke z danymi, zdejmujac kłodke dla innych aplikacji.
plik.close();
cout << "Skonczylem. Przeczytalem w sumie " << licznik << " slow!" << endl;
return 0;
}3. Zapis (Zrzut) odpowiedzi do pliku tekstowego 🪤
Egzamin każe stworzyć plik wyniki4.txt i przepisać do niego odpowiedzi w formacie: "Odpowiedź 4.1: XXX". Bardzo ważne jest to, by odpowiednio skleić stringi w strumieniu!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// Deklarujemy Strumien Wyjsciowy
ofstream plikWynikowy("wyniki4.txt");
int suma = 4500;
string ukryteSzyfry = "HASLOMATURALNE";
// Sklejamy to doslownie tak samo jak dzialalismy w 'cout <<' !
plikWynikowy << "Odpowiedz z zadania 4.1 to: " << suma << endl;
plikWynikowy << "Rozszyfrowane wyrazy: " << ukryteSzyfry << endl;
// Zamykamy
plikWynikowy.close();
cout << "Zrobione! Plik 'wyniki4.txt' pojawil sie na dysku." << endl;
return 0;
}Opanowałeś absolutne fundamenty składni, pętli i wejścia/wyjścia (I/O). Od tej pory 100% twojego skupienia powinno przejść na sam dział Algorytmów. C++ nie będzie już stawiał barier kompilacji, stał się tylko przekaźnikiem potęgi Twojego analitycznego umysłu w dziedzinie ciągów, Euklidesów i szyfrów Cezara. Powodzenia na egzaminie z nową odwagą!
