Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Biblioteka STL (ang. Standard Template Library - Biblioteka Standardowych Szablonów) udostępnia dwa wygodne obiekty, cin i cout, do komunikacji z konsolą znakową. Konsola jest tekstowym trybem pracy i wywodzi się z wczesnych lat komputeryzacji, gdy programy pracowały w trybie znakowym. W trybie konsoli program nie wykonuje rysunków i nie obsługuje elementów graficznych systemu Windows. Komunikacja z użytkownikiem odbywa się za pomocą okna konsoli znakowej. Zaletą konsoli jest prostota obsługi - wysyłamy na konsolę tekst i pojawia się on w oknie, odczytujemy z konsoli ciąg znaków, które wprowadził użytkownik z klawiatury.
Obiekt (w C++ nazywany klasą) cin jest strumieniem wejścia konsoli (ang. console input). Umożliwia on odczyt danych z klawiatury. Pobieranie danych ze strumienia:
cin >> zmienna;
Obiekt cout jest strumieniem wyjścia konsoli (ang. console output). Pozwala on wypisywać teksty na ekranie konsoli. Przesyłanie danych do strumienia:
cout << wyrażenia;
Zwróć uwagę na istotną różnicę. Dane odczytane ze strumienia cin muszą trafić do zmiennej, zatem prawym argumentem operatora << musi być zmienna. W przypadku cout można przesyłać wartości wyrażeń, które przed umieszczeniem w strumieniu są obliczane. Do strumienia w takim wypadku trafia zawsze wynik obliczeń.
Poniższy program odczytuje dwie liczby, sumuje je i wypisuje wynik.
#include <iostream> using namespace std; int main() { unsigned a,b; cout << "Sumowanie dwoch liczb\n\n"; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << a << " + " << b << " = " << a + b << endl << endl; system("pause"); return 0; } |
Oprócz danych do strumieni można przesyłać tzw. manipulatory, które ingerują w sposób działania strumienia. Takimi manipulatorami są endl. Przesłanie ich do strumienia cout powoduje przejście z wydrukiem na początek następnego wiersza. Identyczny efekt uzyskamy przesyłając tekst ze znakami \n:
Przykład:
cout << "Witaj w
C++\n\n";
cout << "Witaj w C++" <<
endl << endl; //
działa tak samo jak powyżej
W poniższej tablicy zebraliśmy użyteczne manipulatory dla strumienia cout (odnoszą się one do wszystkich strumieni wyjściowych).
Manipulator | Opis |
---|---|
endl |
Przenosi wydruk na początek nowego wiersza. |
setw(n) |
Ustawia szerokość wydruku liczby. Jeśli liczba posiada mniej cyfr niż
wynosi n, to reszta pola jest wypełniana spacjami. Manipulator setw(n)
działa jedynie na następną liczbę przesłaną do strumienia. Kolejne dane
nie będą nim już objęte. Cyfry liczby standardowo dosuwane są do prawej
krawędzi pola wydruku.cout << setw(6) << a << endl; |
width(n) |
To samo co setw(n) . |
left |
Umieszcza cyfry liczby po lewej stronie pola wydruku. Stosuje się
tylko po manipulatorze setw(n) .cout << setw(6) << left << a << endl; |
right |
Umieszcza cyfry liczby po prawej stronie pola wydruku. Manipulator jest ustawiony standardowo, zatem jego użycie ma sens tylko do anulowania manipulatora left. Stosuje się tylko po manipulatorze setw(n). |
setfill(ch) |
Manipulator używany tylko po setw(n) . Ustawia on znak,
którym zostanie wypełnione puste miejsce w polu wydruku liczby - jeśli
liczba posiada mniej cyfr niż wynosi szerokość pola, to puste miejsca są
zwykle wypełniane spacjami. Manipulator setfill() pozwala zmienić spacje
na inny znak. Poniższy przykład formatuje wydruk liczb całkowitych na 6
cyfr z wiodącymi zerami, np. zamiast 173 otrzymamy 000173:cout << setw(6) << setfill('0') << a << endl; |
setprecision(n) |
Manipulator ustawia liczbę cyfr po przecinku przy wydruku liczb zmiennoprzecinkowych. Stosuje się do wszystkich liczb zmiennoprzecinkowych, które po manipulatorze trafią do strumienia wyjściowego. |
fixed |
Manipulator powoduje, iż kolejne liczby zmiennoprzecinkowe będą
wyświetlane ze stałą liczbą cyfr po przecinku. Liczbę cyfr ustala
manipulator setprecision(). Jeśli nie był wcześniej zastosowany, to
standardowo otrzymamy 6 cyfr po przecinku: cout << fixed << x << endl; |
scientific |
Po zastosowaniu tego manipulatora liczby zmiennoprzecinkowe będą
wyświetlane w postaci naukowej: 1.56E-2 odpowiada liczbie 1.56 × 10-2 = 1,56 × 0,01 = 0,0156 |
Poniższy program przelicza cale na metry wg wzoru: m = c × 0,0254. Użycie manipulatorów wymaga dołączenia pliku iomanip.
#include <iostream> #include <iomanip> using namespace std; int main() { double c,m; cout << "Przeliczanie cali na metry\n\n"; cout << "cale = "; cin >> c; m = c * 0.0254; cout << setprecision(2) << fixed << c << "\" = " << m << " m\n\n"; system("pause"); return 0; } |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe