Co to są strumienie w C ++?
C ++ zapewnia użytkownikom szereg bibliotek, których mogą używać do wykonywania zadań wejścia / wyjścia. Zadania te są wykonywane w postaci sekwencji bajtów, popularnie nazywanych strumieniami.
Strumienie są podzielone na dwa:
Rodzaje strumieni
- Strumień wejściowy: jest to typ strumienia, w którym bajty przepływają z urządzenia, takiego jak klawiatura, do pamięci głównej.
- Strumień wyjściowy: jest to rodzaj strumienia, w którym bajty przepływają w przeciwnym kierunku, to znaczy z pamięci głównej, a następnie do urządzenia, takiego jak ekran.
W tym samouczku C ++ nauczysz się:
- Co to są strumienie w C ++?
- Jak działają strumienie?
- Tabela funkcji
- Pliki nagłówkowe C ++ dla wejścia / wyjścia
- std :: cout
- std :: cin
- std :: cerr
- std :: clog
- Obsługa błędów w przypadku strumieni we / wy:
Jak działają strumienie?
Strumienie C ++ działają w następujący sposób:
- Najpierw inicjowany jest strumień z odpowiednim typem.
- Następnie należy określić, gdzie wystąpi I / O, używając wskaźników get / put.
- Po dotarciu do odpowiedniego miejsca w strumieniu możesz wykonywać zadania wejścia i wyjścia, używając odpowiednio operatorów >> i <<.
Tabela funkcji
Poniżej przedstawiono funkcje zawarte w pliku nagłówkowym stream.h:
Klasa | Funkcje |
Filebuf | Ustawia bufory plików do odczytu / zapisu. Zawiera funkcje close () i open () |
fstreambase | Jest to klasa bazowa dla klas ifstream, fstream i ofstream. Jego operacje są wspólne dla strumieni plików. |
ifstream | Jest to klasa strumienia plików wejściowych do zapewniania operacji wejściowych. |
ofstream | Jest to klasa strumienia plików wyjściowych do dostarczania operacji wyjściowych. |
fstream | Jest to klasa strumienia wejścia / wyjścia. Obsługuje jednoczesne operacje wejścia / wyjścia. |
Pliki nagłówkowe C ++ dla wejścia / wyjścia
C ++ udostępnia trzy biblioteki z funkcjami do wykonywania podstawowych zadań wejścia / wyjścia. Zawierają:
- Iostream: to skrót od standardowego strumienia wejścia / wyjścia. Ten plik nagłówkowy zawiera definicje obiektów takich jak cin / cout / cerr.
- Iomanip: To akronim oznaczający manipulatory wejścia / wyjścia. Biblioteka zawiera funkcje, których można używać do manipulowania strumieniami. Zawiera definicje obiektów takich jak setw, setprecision i inne.
- Fstream: jest to plik nagłówkowy opisujący strumień pliku. Obsługuje dane odczytywane z pliku jako dane wejściowe lub zapisywane w pliku, jako dane wyjściowe.
Słowa kluczowe cin i cout są bardzo popularne w C ++. Służą one odpowiednio do pobierania danych wejściowych i wydruków. Aby z nich skorzystać, musisz dołączyć plik nagłówkowy iostream do swojego programu. Powodem jest to, że są one zdefiniowane w tym pliku nagłówkowym. Niedołączenie pliku nagłówkowego iostream spowoduje błąd. Wynika to z błędu kompilatora C ++ w zrozumieniu znaczenia słów kluczowych.
Główne obiekty zdefiniowane w pliku nagłówkowym iostream to cin, cout, cerr i clog. Porozmawiajmy o nich.
std :: cout
Obiekt cout jest instancją klasy iostream. Służy do generowania danych wyjściowych na standardowym urządzeniu wyjściowym, którym jest zwykle ekran. Jest używany razem z operatorem wstawiania strumienia (<<).
Przykład:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream, w którym zdefiniowano obiekt cout.
- Uwzględnij przestrzeń nazw std, abyśmy nie musieli jej wywoływać podczas używania jej klas.
- Wywołaj funkcję main (). Kod programu należy dodać w jego treści. Otwierający nawias klamrowy {oznacza początek jego treści.
- Utwórz zmienną znakową o nazwie welcome, która będzie zawierać łańcuch Witamy w Guru99.
- Wydrukuj wartość łańcucha powitalnego na konsoli. Endl jest słowem kluczowym C ++ oznaczającym koniec linii. Przesuwa kursor, aby rozpocząć drukowanie tekstu w następnej linii.
- Program musi zwrócić wartość po pomyślnym wykonaniu.
- Koniec treści funkcji main ().
std :: cin
Obiekt cin jest instancją klasy istream. Odczytuje dane wejściowe z urządzenia wejściowego, klawiatury. Zwykle jest używany razem z operatorem ekstrakcji (>>). Obiekt ekstrakcji jest odpowiedzialny za wyodrębnienie danych wprowadzonych za pomocą klawiatury z obiektu cin.
Przykład:
Poniższy przykład ilustruje użycie słowa kluczowego cin w C ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego programu. Obiekt cin jest zdefiniowany w tym pliku nagłówkowym.
- Uwzględnij przestrzeń nazw std, aby używać jej klas. Nie będziesz musiał wywoływać std podczas korzystania z jego klas.
- Wywołaj funkcję main (). Kod programu należy dodać w jego treści.
- Początek treści programu.
- Zadeklaruj zmienną całkowitą o nazwie liczba.
- Wydrukuj komunikat na ekranie z monitem o wprowadzenie numeru.
- Odczytaj wartość wprowadzoną przez użytkownika na konsoli z klawiatury.
- Wydrukuj wartość odczytaną powyżej na konsoli obok innego tekstu.
- Program powinien zwrócić wartość, jeśli zostanie wykonany pomyślnie.
- Koniec treści funkcji głównej.
std :: cerr
Obiekt cerr tworzy standardowy strumień błędów do wyprowadzania błędów w C ++. Cerr jest instancją klasy ostream. Obiekt cerr nie jest buforowany. Oznacza to, że jest używany, gdy komunikat o błędzie ma być wyświetlany natychmiast.
Ponieważ jest niebuforowany, nie przechowuje komunikatu o błędzie do późniejszego wyświetlenia. Jest używany razem z operatorem wstawiania strumienia (<<).
Przykład:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream, w którym zdefiniowano obiekt cerr.
- Uwzględnij przestrzeń nazw std, abyśmy nie musieli jej wywoływać podczas używania jej klas.
- Wywołaj funkcję main (). Logikę programu należy dodać w jego treści. Otwierający nawias klamrowy oznacza początek treści funkcji.
- Użyj obiektu cerr, aby wydrukować błąd na konsoli.
- Program musi zwrócić wartość po pomyślnym wykonaniu.
- Koniec treści funkcji głównej.
std :: clog
Obiekt clog jest instancją klasy ostream. Służy do pokazywania błędów na standardowym wyświetlaczu, czyli monitorze. Jest podobny do obiektu cerr, ale jest buforowany. Ponieważ jest buforowany, przechowuje komunikat o błędzie w buforze, dopóki bufor nie zostanie wypełniony / opróżniony. Jest używany razem z operatorem wstawiania strumienia (<<).
Przykład:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- W tym plik nagłówkowy iostream, w którym zdefiniowany jest obiekt clog.
- Uwzględnienie przestrzeni nazw std, abyśmy mogli używać jej klas bez wywoływania jej.
- Wywołanie funkcji main (). Logikę programu należy dodać w jego treści. {Oznacza początek treści funkcji.
- Użyj obiektu zatkania, aby wydrukować błąd na standardowym wyjściu, na monitorze.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main ().
Obsługa błędów w przypadku strumieni we / wy:
Aby sprawdzić, czy strumień jest prawidłowy, czy nie, możesz użyć go jako wartości logicznej.
Oto przykład:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
Aby uzyskać więcej informacji o stanie transmisji, możesz skorzystać z następujących funkcji:
- good () - zwróci wartość true, jeśli wszystko jest w porządku.
- bad () - zwróci wartość true, jeśli wystąpi błąd krytyczny.
- fail () - zwróci wartość true po nieudanej operacji na strumieniu.
- eof () - zwróci wartość true, jeśli osiągnie koniec pliku.
Aby dowiedzieć się, czy określona operacja odczytu / zapisu nie powiodła się, sprawdź wynik odczytu.
Na przykład, aby sprawdzić, czy użytkownik wprowadził prawidłową liczbę całkowitą, wykonaj następujące czynności:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Podsumowanie
- Zadania wejściowe i wyjściowe w C ++ są wykonywane za pomocą sekwencji bajtów. Bajty nazywane są strumieniami.
- W strumieniu wejściowym bajty przepływają z urządzenia wejściowego, takiego jak klawiatura, do pamięci głównej.
- W strumieniu wyjściowym bajty z pamięci głównej są następnie przesyłane do urządzenia wyjściowego, takiego jak monitor.
- Obiekt cin jest instancją klasy istream. Odczytuje dane wejściowe z urządzenia wejściowego, takiego jak klawiatura.
- Obiekt cout jest instancją klasy ostream. Generuje dane wyjściowe na urządzeniach wyjściowych, takich jak monitor.
- Obiekt cerr jest instancją klasy ostream. Wyświetla obiekty błędów na monitorze.
- Obiekt clog jest instancją klasy ostream. Wyświetla komunikaty o błędach na urządzeniach wyjściowych.
- Obiekt clog buforuje komunikaty o błędach, podczas gdy obiekt cerr nie.