Operacje wejścia-wyjścia (styl C++)
Wysokopoziomowe operacje wejścia-wyjścia (C++)
Do tej pory używaliśmy pliku nagłówkowego iostream i strumieni cin, cout do realizacji czytania z klawiatury i wypisywania na ekran. Podamy teraz nieco więcej szczegółów dotyczących realizacji tych operacji.
W C++ operacje wejścia-wyjścia są realizowane za pomocą strumieni. Strumień możemy sobie wyobrażać jako strumień danych (bajtów) płynący od źródła do ujścia. Źródłem może być klawiatura, plik, pamięć, modem, potok nazwany, gniazda, skaner, .... Ujściem może być ekran, drukarka, plik, pamięć, ....
W bibliotece są zdefiniowane dwa podstawowe rodzaje strumieni
- input stream - strumienie odpowiadające za czytanie danych, używane gdy nasz program chce mieć dostęp do ujścia strumienia danych
- output stream - strumienie odpowiadające za wysyłanie danych, używane gdy nasz program chce być źródłem dla strumienia danych
Wśród tych dwóch kategorii biblioteka standardowa dostarcza klas realizujących szczególne rodzaje operacji wejścia-wyjścia
- istream - ogólna nazwa na wszystkie strumienie wejściowe (dla zaawansowanych - jest to klasa bazowa dziedziczona w pozostałych strumieniach). Szczególnym rodzajem są
- istringstream - strumień wejściowy, gdzie źródłem danych jest pamięć. Dostępny po włączeniu pliku nagłówkowego sstream
- ifstream - strumień wejściowy, gdzie źródłem danych jest plik. Dostępny po włączeniu pliku nagłówkowego fstream
- ostream - ogólna nazwa na wszystkie strumienie wyjściowe. Szczególnym rodzajem są
- ostringstream - strumień wyjściowy, gdzie ujściem danych jest pamięć. Dostępny po włączeniu pliku nagłówkowego sstream
- ofstream - strumień wyjściowy, gdzie źródłem danych jest plik. Dostępny po włączeniu pliku nagłówkowego fstream
Po dołączeniu któregoś z plików nagłówkowych iostream, sstream, fstream mamy do dyspozycji predefiniowane cztery strumienie
- cin - strumień typu istream, powiązany ze standardowym wejściem (stdin), zwykle jest to klawiatura
- cout - strumień typu ostream, powiązany ze standardowym wyjściem, zwykle jest to ekran. Strumień ten jest buforowany, co oznacza, że dane pojawiają się na ekranie z pewnym opóźnieniem.
- cerr - strumień typu ostream, powiązany ze standardowym strumieniem komunikacji o błędach (stderr), zwykle jest to ekran. Strumień ten nie jest buforowany.
- clog - strumień typu ostream, powiązany ze standardowym strumieniem komunikatów, raczej rzadko używany. Jest buforowany.