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