KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2015

PYTANIE NR 18.
W języku C++, deklaracja std::fstream plik("p", std::ios::out);; oznacza, że zmienna plik jest
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Deklaracja tworzy obiekt std::fstream o nazwie plik i od razu próbuje otworzyć plik o nazwie "p" w trybie wyjścia (std::ios::out). Oznacza to, że zmienna plik jest strumieniem/uchwytem do pliku, a nie typem tekstowym, logicznym ani łańcuchowym.

Pełne wyjaśnienie:

Wyrażenie std::fstream plik("p", std::ios::out); jest deklaracją i jednoczesną inicjalizacją obiektu biblioteki standardowej C++. Typem zmiennej plik jest std::fstream, czyli strumień plikowy służący do operacji wejścia/wyjścia na plikach.

Argument "p" jest nazwą pliku przekazaną do konstruktora, a std::ios::out to flaga trybu otwarcia oznaczająca otwarcie do zapisu (wyjście). W praktyce taki obiekt wykorzystuje się jak "kanał" do zapisywania danych do pliku, np. przez operator << lub metody strumienia, a następnie zamyka się plik (jawnie lub w destruktorze).

Dlaczego pozostałe odpowiedzi są błędne?

  • "typu tekstowego" – typ tekstowy w C++ kojarzy się np. z tekstem jako danymi (np. ciąg znaków), natomiast tutaj typem jest klasa strumienia plikowego, czyli obiekt do wykonywania operacji I/O.
  • "typu logicznego" – typ logiczny (bool) przechowuje wartość prawda/fałsz. W deklaracji wprost widać typ std::fstream, więc nie jest to zmienna logiczna.
  • "typu łańcuchowego" – łańcuch znaków (np. string) opisuje przechowywanie tekstu. Napis "p" jest tylko argumentem konstruktora (nazwą pliku), a nie definicją typu zmiennej.

Wskazana odpowiedź "plikową" należy rozumieć jako: zmienna jest związana z obsługą pliku (strumień plikowy). Na egzaminie warto patrzeć przede wszystkim na typ po lewej stronie deklaracji (tu: std::fstream) oraz na tryb otwarcia (tu: zapis).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
std::fstream to klasa strumienia plikowego do obsługi plików w C++. Umożliwia zarówno odczyt, jak i zapis (zależnie od trybu otwarcia). Obiekt tej klasy działa jak "uchwyt" do pliku i pozwala wykonywać operacje I/O.
To utworzenie obiektu o nazwie plik typu std::fstream i próba otwarcia pliku o nazwie "p" w trybie wyjścia, czyli do zapisu. Zmienna nie przechowuje tekstu, tylko reprezentuje strumień powiązany z plikiem.
std::ios::out oznacza otwarcie strumienia w trybie wyjścia (zapis). Dzięki temu można zapisywać dane do pliku. W zależności od pozostałych flag może to także wpływać na tworzenie pliku lub zachowanie dotychczasowej zawartości.
Napis "p" jest argumentem przekazywanym do konstruktora (najczęściej nazwą pliku/ścieżką). Typ zmiennej wynika z części po lewej stronie deklaracji, czyli z std::fstream, a nie z wartości przekazanej w nawiasach.
Najczęściej sprawdza się stan strumienia, np. przez warunek if(plik) lub metody stanu (fail(), is_open()). Jeśli otwarcie się nie powiodło, strumień przejdzie w stan błędu i zapis/odczyt nie będą działały poprawnie.
std::ifstream służy głównie do odczytu, std::ofstream do zapisu, a std::fstream może służyć do obu kierunków (zależnie od trybu). Wybór klasy ułatwia czytelność kodu i dopasowanie do zadania.
std::ios::in stosuje się, gdy plik ma być otwarty do odczytu. Jeśli chcesz pobrać dane z pliku (np. wczytać konfigurację lub testowe dane wejściowe), wybierasz tryb wejścia, a nie wyjścia.
Nie zawsze. Zachowanie zależy od trybów otwarcia (flag). W praktyce sam tryb wyjścia jest używany do zapisu, ale to, czy plik zostanie utworzony lub czy treść będzie nadpisana/dopisana, zależy od kombinacji flag (np. dopisywanie, obcięcie).
Możesz wywołać plik.close(). Jeśli tego nie zrobisz, plik i tak zostanie zamknięty przy niszczeniu obiektu (np. po wyjściu z zakresu). Na egzaminie warto pamiętać o jawnym zamykaniu w dłuższych programach.
Typowe błędy to: brak sprawdzenia, czy plik się otworzył, pomylenie trybów (odczyt vs zapis), zapominanie o zamknięciu lub nieprawidłowa ścieżka do pliku. Często myli się też typ strumienia z danymi, które do pliku zapisujemy.
info

Statystycznie 63% uczniów zna prawidłową odpowiedź. średnie

W praktyce zawodowej kluczowe jest to, że deklaracja tworzy obiekt std::fstream o nazwie plik i od razu próbuje otworzyć plik o nazwie "p" w trybie wyjścia (std::ios::out).

Źródła:

  • cppreference.com: std::basic_fstream / std::fstream (C++ standard library reference) — https://en.cppreference.com/w/cpp/io/basic_fstream (dostęp: 2026-02-18)
  • cppreference.com: std::ios_base::openmode i flaga std::ios::out — https://en.cppreference.com/w/cpp/io/ios_base/openmode (dostęp: 2026-02-18)
  • cplusplus.com: fstream class reference — https://cplusplus.com/reference/fstream/fstream/ (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja biblioteki standardowej C++ (I/O streams)
  • Materiały do nauki o strumieniach w C++ (wejście/wyjście, pliki)
  • Przykładowe zadania: zapis/odczyt plików tekstowych i binarnych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego