strumienie-danych, studia, PP


Strumienie danych

C++ zawiera bibliotekę iostream.h, którą jest dołączona do wszystkich przykładów, w która służy do obsługi wejścia wyjścia, w oparciu o klasę obiektów.
Strumień jest abstrakcyjnym modelem urządzenia wejścia wyjścia, takiego jak plik, ekran, klawiatura a nawet bufor w pamięci. Jest on tym pomiędzy programem a plikiem czy klawiaturą, czym sterownik dla wIndowsa pomiędzy systemem a jakimś urządzeniem, np kartą graficzną. Program nie jest zainteresowany jaki ty masz monitor, czy do którego pliku on zapisuje. O to martwi się strumień, i ewentualnie informuje nas o błędach.
Biblioteka iostream.h zawiera 4 podstawowe strumienie:

Zamiast definicji funkcji składowych do realizacji wejścia, wyjścia biblioteka iostream.h zawiera operatory oznaczających przesłanie danych na wejście i wyjście. W C++ >> jest operatorem wejścia a << jest operatorem wyjścia. Zresztą to widać podczas pisania programu jeżeli chcemy wysłać do strumienia wartość zmiennej to piszemy:
cout << zmienna;
Czyli przesyłamy dane ze zmiennej w kierunku strumienia, tak jak byśmy rysowali strzałkę. Jeżeli pobieramy wartość ze strumienia i zapisujemy ją do zmiennej to piszemy:
cin >> zmienna;
Myślę że to widać.
Operatory te umożliwiają przy użyciu jednej składni można wysyłać lub pobierać ze strumienia kilka wartości. Np:
cout << "Wartość zmiennej: " <<zmienna;
Za pomocą powyższego polecenia wysyłamy do strumienia string oraz wartość jakiejś tam zmiennej.
Oba operatory przekształcają tekst na odpowiedni typ zmiennych i odwrotnie, w zależności jaki typ został zastosowany.

Pewnie nasuwa ci się pytanie co to jest bufor. Jest to takie miejsce gdzie komputer gromadzi sobie informacje. Na przykład przy pracy ze strumieniem cout, komputer czeka aż uzbiera mu się trochę znaków w buforze a potem je wyświetla, np całą linię. W tedy program szybciej działa, bo nie musi co chwilę przerywać działania by się zajmować wyświetleniem kolejnego znaku. Strumienie są jednak tak skonstruowane że bufor cout jest czyszczony, czyli wszystkie znaki są wyświetlane jeżeli odwołamy się do cin. Bo skąd ma ktoś wiedzieć co ma wpisać jak komputer nie wyświetlił tego na ekranie?

Manipulatory służą nam do formatowania wyjścia i wejścia. Np standardowo wartość zmiennej np typu int jest wyświetlana w postaci dziesiętnej. Jeżeli chcemy ją wyświetlić w postaci np szesnastkowej to używamy do tego manipulatorów. Oto tabela które je przedstawia:

Manipulator:

Przykład użycia:

Działanie:

dec

cout << dec << zmienna;
cin >> dec >> zmienna;

Przekształca liczby całkowite na ciąg cyfr dziesiętnych podobnie jak format %d w C

hex

cout << hex << zmienna;
cin >> hex >> zmienna;

Konwersja na układ szesnastkowy, podobnie jak %x w C

oct

cout << oct << zmienna;
cin >> oct >> zmienna;

Konwersja na układ ósemkowy, podobnie jak %o w C

ws

cin >> ws;

Usuwa spację na strumieniu wejściowym

endl

cout << endl;

Przesyła na strumień wyjścia nową linię i opróżnia bufor. To samo co '\n' w C

ends

cout << ends;

Wstawia znak pusty

flush

cout << flush;

Opróżnia bufor strumienia wyjściowego

resetiosflags(long)

cout << resetiosflags(ios::dec);
cin >> resetiosflags(ios::hex);

Zmienia bity formatu w sposób podany przez argument typu long int (flagę)

setbase(int)

cout << setbase(4);
cin >> setbase(15);

Ustawia podstawę konwersji na podany argument typu int (0, 8, 10,16) Dla zera ustawia tę podstawę na standardową.

setfill(int)

cout << setfill(' ');
cin >> setfill('.');

Podaje znak wypełnienia pola do określonej szerokości.

setiosflags(long)

cout << setiosflags(ios::dec);
cin >> setiosflags(ios::hex);

Ustawia bity formatu w sposób podany poprzez argument typu long int (flagę)

setprecision(int)

cout << setprecision(4);
cin >> setprecision(15);

Ustawia liczbę znaków po przecinku przy konwersji na liczby rzeczywiste

setw(int)

cout << setw(4) << zmienna;
cin >> setw(15) >> zmienna;

Ustawia szerokość pola na podaną liczbę znaków

Nazwy flag formatu biblioteki iostream.h

Nazwa flagi:

Jak działa włączona:

ios::skipws

Pomijanie spacji na wejściu

ios::left

Wyrównywanie wyjścia dla określonej szerokości pola

ios::right

Wyrównywanie wyjścia do prawej

ios::scientific

Używanie notacji wykładniczej dla liczb rzeczywistych

ios::fixed

Używanie notacji dziesiętnej dla liczb rzeczywistych

ios::dec

Używanie postaci dziesiętnej dla liczb całkowitych

ios::hex

Używanie postaci szesnastkowej dla liczb całkowitych

ios::oct

Używanie postaci ósemkowej dla liczb całkowitych

ios::uppercase

Używanie dużych liter na wyjściu dla liczby w postaci szesnastkowej

ios::showbase

Wskazuje na podstawę systemu liczenia na wyjściu. Przedrostek 0x dla szesnastkowego i 0 dla ósemkowego

ios::showpoint

Liczby zmiennopozycyjne mają kropkę dziesiętną na wyjściu

ios::showpos

Liczby dodatnie są wyświetlane wraz ze znakiem +

ios::unitbuf

Opróżnianie wszystkich buforów po przesłaniu znaków na strumień

Manipulator setprecision i flagi scientific, fixed, showpoint służą do formatowania liczb zmiennoprzecinkowych.



Wyszukiwarka

Podobne podstrony:
PRAWO CIĄGŁOŚCI STRUMIENIA KRWI (1), Studia, biofizyka
Bazy Danych, STUDIA, SEMESTR III, Bazy Danych, Wykład
test pp, studia, PP
03 Zgromadzenie Danych(2), Studia, Rok III, Rynek nieruchomości
Streaming Media czyli media strumieniowe, Dokumenty, studia, notatki, itp, Marketing
Ochrona danych, Studia, Ochrona własności intelektualnej
SQL w analizie danych2, Studia, Stopień 2 Semestr II, SQL, sql - Anna Ociepa, SQL projekty, sql - An
potokowanie strumienia danych
W6 - Diagramy przep. danych, STUDIA, III Semestr, Procesy Informacyjne w zarządzaniu prof Stanisław
03 Zgromadzenie Danych, Studia, Rok III, Rynek nieruchomości
W4 -ELEKTRONICZNA WYMIANA DANYCH, STUDIA, III Semestr, Procesy Informacyjne w zarządzaniu prof Stani
zrodla danych, Studia UEK Kraków Zarządzanie zaoczne, Badania marketingowe
PRAWO CIĄGŁOŚCI STRUMIENIA KRWI (1), Studia, biofizyka
Bazy Danych, STUDIA, SEMESTR III, Bazy Danych, Wykład
test pp, studia, PP
SPSS paca domowa 1 odpowiedzi, Studia, Kognitywistyka UMK, I Semestr, Statystyczna analiza danych

więcej podobnych podstron