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 danychendl– znak końca linii + opróżnienie bufora- Można łączyć wiele elementów w jednym wywołaniu:
1.2 Manipulatory formatu
setw(n)– szerokość polasetprecision(n)– liczba miejsc po przecinkufixed– format dziesiętnyscientific– 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ść polasetfill(c)– wypełnienie pola znakiemcleft,right– wyrównaniefixed,scientific– format liczb zmiennoprzecinkowychsetprecision(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 strumieniuignore(n, c)– pomija znaki donlub do znakuc
Przykład:
7. Formatowanie liczb i tekstu
hex,dec,oct– zapis liczb w systemie szesnastkowym, dziesiętnym i ósemkowymshowbase– pokazuje prefix0xlub0noshowbase– 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
cinicoutsą strumieniami synchronizowanymi z C, co można wyłączyć dla wydajności:
- Standardowo
cinignoruje białe znaki (space,\t,\n) przy operatorze>>. getline()jest używane, gdy chcemy wczytać całą linię z białymi znakami.- 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
iostreamifstream. - 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.