INFORMATYKA 2

Strumienie w C++

• cout - związany ze standardowym urządzeniem wyjścia (ekran), skrót od ang.

TEMAT: Operacje wejścia/wyjścia w języku C++

C-onsole OUT-put

• cin - związany ze standardowym urządzeniem wejścia (klawiatura), skrót od ang.

Program w języku C++

C-onsole IN-put

•

cerr - związany ze standardowym urządzeniem, na które chce się wypisywać

#include <iostream>

komunikaty o błędach (ekran) - strumień niebuforowany

int main()

• clog - związany ze standardowym urządzeniem, na które chce się wypisywać

{

komunikaty o błędach (ekran) - strumień buforowany

std::cout << "Witaj swiecie!" << std::endl; system("pause");

}

Operatory << i >>

• << - operator odpowiadający za wysyłanie informacji do strumienia, nazywany

jest często operatorem insert - wstawienia (albo put to)

• std:: przed nazwami identyfikatorów cout i endl oznacza, Ŝe pochodzą one

• >> - operator odpowiadający za wczytywanie informacji, nazywany jest z biblioteki standardowej (dokładniej - pochodzą z tzw. przestrzeni nazw std) operatorem ekstrakcji (extract operator) lub operatorem get from

• endl - przejście do nowego wiersza, odpowiada "\n" w języku C

• w celu uniknięcia ciągłego pisania std:: przed nazwami identyfikatorów Przykłady:

umieszcza się w programie dyrektywę: using namespace std;

int x = 10, y = 25;

float z = 1.1234567;

#include <iostream>

char txt[10]="Napis";

using namespace std;

cout << x;

10

int main()

cout << "x = " << x;

x = 10

{

cout << x << y;

1025

cout << "Witaj swiecie!" << endl; cout << x << " " << y;

10 25

system("pause");

cout << x << " " << y << endl; 10 25

}

cout << z << endl;

1.12346

cout << txt << endl;

Napis

cout << txt << "\n";

Napis

Strumienie:

• operacje wejścia/wyjścia w języku C++ zrealizowane zostały na strumieniach

• wprowadzanie i wyprowadzanie informacji moŜna potraktować jako strumień int x, y;

bajtów płynących od źródła do ujścia.

float z;

• strumienie w C++ realizowane są na zasadzie klas

•

cin >> x;

wykorzystanie strumieni wymaga dołączenia pliku nagłówkowego iostream cin >> x >> y;

#include <iostream> zamiast #include <stdio.h> cin >> x >> z;

Informatyka 2

- 1 -

© 2008 Jarosław Forenc

Informatyka 2

- 2 -

© 2008 Jarosław Forenc

Ogólne zasady dotyczące wyświetlania danych (cout << …) endl

- przejście do nowego wiersza („\n” + flush)

• liczby całkowite wyświetlane są w systemie dziesiątkowym

•

showpoint

zmienne typów char, unsigned char wyświetlane są jako pojedyncze znaki

- pokazywanie nieznaczących zer i kropki dziesiętnej

noshowpoint

• liczby zmiennoprzecinkowe typów float, double wyświetlane są z dokładnością do 6 cyfr (6 cyfr części całkowitej i ułamkowej, bez zbędnych zer)

float x = 10;

• wskaźniki wyświetlane są w systemie szesnastkowym

cout << showpoint << x << " " << noshowpoint << x; 10.0000 10

• zmienne typów char *, unsigned char * wyświetlane są jako łańcuchy znaków showpos

- wyświetlanie znaku liczby dodatniej

noshowpos

Ogólne zasady dotycz

ące wczytywania danych (cin >> …)

float x = 10;

• białe znaki (spacja, tabulacja, enter) są ignorowane

cout << showpos << x << " " << noshowpos << x; +10 10

• liczby wczytywane s

ą w systemie dziesiątkowym

showbase

•

- wyświetlanie 0x na początku liczby w systemie szesnastkowym nie moŜna umieszczać spacji pomiędzy znakiem liczby a jej wartością noshowbase

i 0 na początku liczby w systemie ósemkowym

• wczytywanie liczby całkowitej jest kończone, gdy napotkany znak nie jest cyfrą

•

int x = 10;

w liczbach zmiennoprzecinkowych nie moŜe występować spacja w środku cout << hex << x << " " << showbase << x; a 0xa

• wczytywanie tekstów jest kończone po napotkaniu pierwszego białego znaku fixed

- notacja dziesiętna / wykładnicza (format naukowy)

scientific

Metody zmiany sposobu wyświetlania znaków

1. Funkcje składowe klasy ios: setf, unsetf ustawiające odpowiednie flagi float x = 10.123456;

cout << fixed << x; 10.123456

2. Funkcje składowe klasy ios zmieniające towarzyszące im parametry, np.

cout << scientific << x; 1.012346e+001

szerokość, precyzję, itp.

3. Manipulatory

• kolejne manipulatory wymagają dołączenia pliku nagłówkowego iomanip

- ustawia szerokość wyświetlania liczb lub wczytywania tekstów setw(int)

Manipulatory:

(dotyczy tylko najbliŜszej operacji wejścia/wyjścia)

• s

ą to specjalne wartości, które moŜna wstawić do strumienia po to, aby wywołać zamierzony efekt uboczny polegający na zmianie sposobu formatowania setfill(char) - ustawia znak będący wypełnieniem

•

manipulatory działają trwale (nie dotyczy to manipulatora setw)

- określa dokładność wyświetlania liczb

zmiennoprzecinkowych:

hex

- określają sposób wyświetlania / wczytywania liczb

- dla fixed - ilość miejsc po kropce

setprecision(int)

dec

(hex - system szesnastkowy, dec - system dziesiętny,

- dla scientific - dokładność cechy (ale nie wykładnika) oct

oct - system ósemkowy)

- dla „trybu krótkiego” - łączna ilość cyfr przed

i po kropce dziesiętnej

int x = 100;

cout << x << " " << hex << x << " " << oct << x; 100 64 144

flush

- opróŜnienie bufora

Informatyka 2

- 3 -

© 2008 Jarosław Forenc

Informatyka 2

- 4 -

© 2008 Jarosław Forenc