C++ Podstawowe wejście/wyjście: przykład Cout, Cin, Cerr
⚡ Inteligentne podsumowanie
C++ Operacje wejścia i wyjścia opierają się na obiektach strumieniowych, które przesyłają dane jako sekwencje bajtów między programami i urządzeniami, przy czym cin odczytuje dane wprowadzane z klawiatury, a cout, cerr i clog zapisują dane wyjściowe na ekranie.
W czym są strumienie C++?
C++ zapewnia użytkownikom szereg bibliotek, których mogą używać do wykonywania zadań wejścia/wyjścia. Zadania te realizowane są w formie sekwencji bajtów, popularnie zwanych strumieniami.
Strumienie dzielą się na dwa:
Rodzaje strumieni
- Strumień wejściowy: Jest to rodzaj 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 wyświetlacza.
Jak działają strumienie?
C++ strumienie działają w następujący sposób:
- Najpierw inicjowany jest strumień odpowiedniego typu.
- Następnie należy określić miejsce wykonania operacji wejścia/wyjścia, korzystając ze wskaźników get/put.
- Po dotarciu do właściwego miejsca w strumieniu możesz wykonywać zadania wejściowe i wyjściowe, odpowiednio za pomocą operatorów >> i <<.
Tabela funkcji
Poniżej przedstawiono funkcje zawarte w pliku nagłówkowym stream.h:
| Klasa | Funkcje |
|---|---|
| Plikbuf | Ustawia bufory plików do odczytu/zapisu. Posiada funkcje close() i open() |
| baza fstream | Jest to klasa bazowa dla klas ifstream, fstream i ofstream. Jej operacje są wspólne dla strumieni plików. |
| jeśli strumień | Jest to klasa strumienia pliku wejściowego zapewniająca operacje wejściowe. |
| poza strumieniem | Jest to klasa strumienia pliku wyjściowego umożliwiająca wykonywanie operacji wyjściowych. |
| fstream | To klasa strumienia wejścia/wyjścia. Obsługuje jednoczesne operacje wejścia/wyjścia. |
C++ Pliki nagłówkowe dla wejścia/wyjścia
C++ udostępnia trzy biblioteki zawierające funkcje umożliwiające wykonywanie podstawowych zadań wejścia/wyjścia. Należą do nich:
- Iostream: To skrót od standardowego strumienia wejścia/wyjścia. Ten plik nagłówkowy zawiera definicje obiektów takich jak cin/cout/cerr.
- Jomanip: To skrót od manipulatorów wejścia/wyjścia. Biblioteka zawiera funkcje, które można wykorzystać do manipulacji 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 do 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 drukowania. 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 wygenerowanie błędu. Jest to spowodowane porażką ze strony C++ kompilator, aby zrozumieć znaczenie słów kluczowych.
Główne obiekty zdefiniowane w pliku nagłówkowym iostream to cin, cout, cerr i clog. Omówmy je.
std::out
Obiekt cout jest instancją klasy iostream. Służy do generowania danych wyjściowych na standardowym urządzeniu wyjściowym, którym zwykle jest ekran. Jest używany razem z operatorem wstawiania strumienia (<<).
Przykład
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Code Wyjaśnienie:
- Dołącz plik nagłówkowy iostream, w którym zdefiniowany jest obiekt cout.
- Dołącz przestrzeń nazw std, abyśmy nie musieli jej wywoływać podczas korzystania z jej klas.
- Wywołaj funkcję main(). Kod programu należy dodać w jego treści. Otwierający nawias klamrowy { oznacza początek treści.
- Utwórz zmienną znakową o nazwie welcome, w której będzie przechowywany ciąg znaków Welcome to Guru99.
- Wydrukuj wartość ciągu powitalnego na konsoli. Koniec jest a C++ słowo kluczowe oznaczające linię końcową. 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 obiektem ex.tracoperator cji (>>).tracobiekt tion jest odpowiedzialny za np.tracwprowadzanie danych za pomocą klawiatury z obiektu cin.
Przykład
Poniższy przykład pokazuje, jak używać słowa kluczowego cin w C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Code Wyjaśnienie:
- Dołącz plik nagłówkowy iostream do naszego programu. Obiekt cin jest zdefiniowany w tym pliku nagłówkowym.
- Dołącz przestrzeń nazw std, aby użyć 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 zmienna całkowita nazwany numer.
- Wydrukuj na ekranie komunikat proszący użytkownika o wprowadzenie numeru.
- Odczytaj z klawiatury wartość wprowadzoną przez użytkownika na konsoli.
- Wydrukuj wartość przeczytaną powyżej na konsoli wraz z innym tekstem.
- Program powinien zwrócić wartość, jeśli zostanie pomyślnie wykonany.
- Koniec ciała funkcji głównej.
std::cerr
Obiekt cerr tworzy standardowy strumień błędów do wysyłania błędów C++. Cerr jest instancją klasy ostream. Obiekt cerr jest niebuforowany. Oznacza to, że jest używany, gdy komunikat o błędzie ma zostać wyświetlony natychmiast.
Ponieważ nie jest buforowany, nie przechowuje komunikatu o błędzie do późniejszego wyświetlenia. Jest używany razem z operatorem wstawiania strumienia (<<).
Przykład
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Code Wyjaśnienie:
- Dołącz plik nagłówkowy iostream, w którym zdefiniowano obiekt cerr.
- Dołącz przestrzeń nazw std, abyśmy nie musieli jej wywoływać podczas korzystania z jej klas.
- Wywołaj funkcję main(). Logikę programu należy dodać w jego treści. Otwierający nawias klamrowy wyznacza 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 ciała funkcji głównej.
std::zatkać
Obiekt clog jest instancją klasy ostream. Służy do wyświetlania błędów na standardowym wyświetlaczu, 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
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Code Wyjaśnienie:
- Łącznie z plikiem nagłówkowym iostream, w którym zdefiniowany jest obiekt zatykający.
- Dołączamy przestrzeń 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 clog, aby wydrukować błąd na standardowym wyjściu, monitorze.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main().
Obsługa błędów w strumieniach IO
Te same obiekty strumienia raportują również, czy operacja zakończyła się powodzeniem, co ujawniają kontrole stanu strumienia.
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 szczegółów na temat statusu strumienia, możesz użyć 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 w przypadku nieudanej operacji strumieniowej.
- eof() - zwróci wartość true, jeśli dotrze do końca pliku.
Aby dowiedzieć się, czy konkretna operacja odczytu/zapisu nie powiodła się, należy sprawdzić 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; }





