Funkcje wejścia/wyjścia (I/O) w C++

W C++ funkcje wejścia/wyjścia umożliwiają komunikację programu z użytkownikiem lub plikami. Najczęściej korzysta się z biblioteki standardowej iostream:

Podstawowe obiekty:

  • cin – wejście standardowe (z klawiatury)
  • cout – wyjście standardowe (na ekran)
  • cerr – wyjście błędów (na ekran, bez buforowania)
  • clog – wyjście logów (buforowane)

1. Wyjście danych – cout

1.1 Podstawowe użycie

  • << – operator strumienia do wysyłania danych
  • endl – znak końca linii + opróżnienie bufora
  • Można łączyć wiele elementów w jednym wywołaniu:

1.2 Manipulatory formatu

  • setw(n) – szerokość pola
  • setprecision(n) – liczba miejsc po przecinku
  • fixed – format dziesiętny
  • scientific – format naukowy

Przykład:


2. Wejście danych – cin

2.1 Podstawowe użycie

  • >> – operator strumienia do pobierania danych
  • Można wczytać kilka zmiennych naraz:

2.2 Odczyt ciągów znaków

  • Aby wczytać cały wiersz, używamy getline:

3. Wyjście błędów i logów

  • cerr – wyjście błędów, nie buforowane.
  • clog – wyjście logów, buforowane.

Przykład:


4. Funkcje formatowania wejścia/wyjścia

4.1 Manipulatory strumieniowe

  • setw(n) – szerokość pola
  • setfill(c) – wypełnienie pola znakiem c
  • left, right – wyrównanie
  • fixed, scientific – format liczb zmiennoprzecinkowych
  • setprecision(n) – liczba miejsc po przecinku

Przykład:


5. Wejście/wyjście plików

Do pracy z plikami używa się nagłówków:

5.1 Tworzenie i zapis pliku

  • ofstream – strumień wyjścia (do zapisu)
  • ifstream – strumień wejścia (do odczytu)
  • fstream – strumień do odczytu i zapisu

5.2 Odczyt pliku


6. Funkcje manipulujące strumieniami

  • flush – opróżnia bufor strumienia:
  • peek – podgląd następnego znaku w strumieniu
  • ignore(n, c) – pomija znaki do n lub do znaku c

Przykład:


7. Formatowanie liczb i tekstu

  • hex, dec, oct – zapis liczb w systemie szesnastkowym, dziesiętnym i ósemkowym
  • showbase – pokazuje prefix 0x lub 0
  • noshowbase – wyłącza prefix

Przykład:


8. Funkcje wejścia/wyjścia znaków

  • get() – odczyt pojedynczego znaku
  • put() – zapis pojedynczego znaku
  • getline() – odczyt całej linii

9. Podstawowe zasady i uwagi

  1. cin i coutstrumieniami synchronizowanymi z C, co można wyłączyć dla wydajności:
  1. Standardowo cin ignoruje białe znaki (space, \t, \n) przy operatorze >>.
  2. getline() jest używane, gdy chcemy wczytać całą linię z białymi znakami.
  3. Dla dużych plików stosuje się buforowane strumienie (ifstream/ofstream), aby przyspieszyć I/O.

10. Podsumowanie

  • C++ oferuje rozbudowane funkcje wejścia/wyjścia przez iostream i fstream.
  • Standardowe obiekty: cin, cout, cerr, clog.
  • Funkcje znakowe: get(), put(), getline().
  • Manipulatory (setw, setprecision, fixed) umożliwiają formatowanie wyjścia.
  • Strumienie plikowe (ifstream, ofstream, fstream) pozwalają na odczyt i zapis danych w plikach.
  • Znajomość I/O jest podstawą interakcji programu z użytkownikiem i systemem plików.