std
Transkrypt
std
MATERIAŁY POMOCNICZE DO PRACOWNII Z PRZEMIOTU „INFORMATYKA 2” cerr - związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień niebuforowany. clog - związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień buforowany. Program w języku C++: Operatory << i >>: #include <iostream> - operator odpowiadający za wysyłanie informacji do strumienia, nazywany jest często operatorem insert - wstawienia (albo put to). >> - operator odpowiadający za wczytywanie informacji, nazywany jest operatorem ekstrakcji (extract operator) lub operatorem get from. << int main() { std::cout << "Witaj swiecie!" << std::endl; system("pause"); } Przykłady wyświetlania informacji na ekranie: std:: przed nazwami identyfikatorów cout i endl oznacza, że pochodzą one z biblioteki standardowej (dokładniej - pochodzą z tzw. przestrzeni nazw std). 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 umieszcza się w programie dyrektywę: using namespace std; Załóżmy, że mamy w programie następujące deklaracje zmiennych (wraz z inicjalizacją): int x = 10, y = 25; float z1 = 1.1234567, z2 = 11.234567; char txt[10]="Napis"; o wyświetlenie wartości zmiennej x typu int: cout << x; #include <iostream> o using namespace std; 10 wyświetlenie wartości zmiennej x typu int poprzedzonej tekstem "x = ": cout << "x = " << x; int main() { cout << "Witaj swiecie!" << endl; system("pause"); } o o wyświetlenie dwóch zmiennych, x i y, typu int, pomiędzy wyświetlonymi liczbami nie ma żadnego odstępu gdyż nie został on wstawiony do strumienia: cout << x << y; Strumienie: x = 10 1025 wyświetlenie dwóch zmiennych, x i y, typu int oddzielonych znakiem spacji: cout << x << " " << y; Operacje wejścia/wyjścia w języku C++ zrealizowane zostały na strumieniach. Wprowadzanie i wyprowadzanie informacji można potraktować jako strumień bajtów płynących od źródła do ujścia. Strumienie w C++ realizowane są na zasadzie klas. Wykorzystanie strumieni wymaga dołączenia pliku nagłówkowego iostream: #include <iostream> zamiast o 10 25 wyświetlenie dwóch zmiennych, x i y, typu int oraz dodanie przejścia do nowego wiersza (endl): cout << x << " " << y << endl; o #include <stdio.h> wyświetlenie zmiennej z1 typu float, domyślnie wyświetlanych jest sześć pierwszych znaczących cyfr: cout << z1 << " " << z2 << endl; Predefiniowane strumienie w C++: o cout - związany ze standardowym urządzeniem wyjścia (ekran), skrót od ang. C-onsole OUT-put. cin - związany ze standardowym urządzeniem wejścia (klawiatura), skrót od ang. C-onsole IN-put. Informatyka 2 - Pracownia Strona 1 z 4 © 2009 Jarosław Forenc 1.12346 11.2346 wyświetlenie łańcucha znaków z przejściem do nowego wiersza: cout << txt << endl; o 10 25 Napis jako przejście do nowego wiersza możemy zastosować też znak "\n": cout << txt << "\n"; Informatyka 2 - Pracownia Napis Strona 2 z 4 © 2009 Jarosław Forenc Przykłady wczytywania informacji: hex dec oct Załóżmy, że mamy w programie następujące deklaracje zmiennych: int x, y; float z; o int x = 100; cout << x << " " << hex << x << " " << oct << x; 100 64 144 wczytanie zmiennej x typu int: cin >> x; o - określają sposób wyświetlania / wczytywania liczb (hex - system szesnastkowy, dec - system dziesiętny, oct - system ósemkowy) wczytanie zmiennych x i y, typu int: flush - opróżnienie bufora endl - przejście do nowego wiersza (równoważne: ”\n” i flush) showpoint noshowpoint - pokazywanie nieznaczących zer i kropki dziesiętnej cin >> x >> y; o wczytanie zmiennej x typu int i zmiennej z typu float: cin >> x >> z; float x = 10; cout << showpoint << x << " " << noshowpoint << x; Ogólne zasady dotyczące wyświetlania danych: Liczby całkowite wyświetlane są w systemie dziesiętnym. Zmienne typów char, unsigned char wyświetlane są jako pojedyncze znaki. 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). Wskaźniki wyświetlane są w systemie szesnastkowym. Zmienne typów char *, unsigned char * wyświetlane są jako łańcuchy znaków. showpos noshowpos Ogólne zasady dotyczące wczytywania danych: fixed scientific - wyświetlanie 0x na początku liczby w systemie szesnastkowym i 0 na początku liczby w systemie ósemkowym 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. Manipulatory działają trwale (nie dotyczy to manipulatora setw). Informatyka 2 - Pracownia Strona 3 z 4 © 2009 Jarosław Forenc 10.123456 1.012346e+001 Kolejne manipulatory wymagają dołączenia pliku nagłówkowego iomanip. setw(int) setfill(char) - ustawia szerokość wyświetlania liczb lub wczytywania tekstów (dotyczy tylko najbliższej operacji wejścia/wyjścia) - ustawia znak będący wypełnieniem Manipulatory: a 0xa - notacja dziesiętna / wykładnicza (format naukowy) float x = 10.123456; cout << fixed << x; cout << scientific << x; Funkcje składowe klasy ios: setf, unsetf ustawiające odpowiednie flagi. Funkcje składowe klasy ios zmieniające towarzyszące im parametry, np. szerokość, precyzję, itp. Manipulatory. +10 10 int x = 10; cout << hex << x << " " << showbase << x; Białe znaki (spacja, tabulacja, enter) są ignorowane. Liczby wczytywane są w systemie dziesiątkowym. Nie można umieszczać spacji pomiędzy znakiem liczby a jej wartością. Wczytywanie liczby całkowitej jest kończone, gdy napotkany znak nie jest cyfrą. W liczbach zmiennoprzecinkowych nie może występować spacja w środku. Wczytywanie tekstów jest kończone po napotkaniu pierwszego białego znaku. Metody zmiany sposobu wyświetlania znaków: - wyświetlanie znaku liczby dodatniej float x = 10; cout << showpos << x << " " << noshowpos << x; showbase noshowbase 10.0000 10 setprecision(int) Informatyka 2 - Pracownia - określa dokładność wyświetlania liczb zmiennoprzecinkowych: - dla fixed - ilość miejsc po kropce - dla scientific - dokładność cechy (ale nie wykładnika) - dla „trybu krótkiego” - łączna ilość cyfr przed i po kropce dziesiętnej Strona 4 z 4 © 2009 Jarosław Forenc