Operacje wejścia/wyjścia

Nasza ocena:

4
Pobrań: 7
Wyświetleń: 658
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Operacje wejścia/wyjścia  - strona 1

Fragment notatki:


Operacje wejścia / wyjścia Wykład 10 10/12/13 2 Strumienie  Wprowadzanie i wyprowadzanie informacji można  potraktować jako strumień bajtów płynący od  źródła do ujścia  Strumienie są realizowane w C++ na zasadzie klas  Dysponujemy dwoma poziomami wczytywania i  wypisywania informacji  Poziom niższy – elementarny, umożliwia tylko przysyłanie  bajtów od źródła do ujścia  Nie ma interpretacji  Poziom wyższy – jw. z dodatkową interpretacją  informacji (konwersję, sposób wyświetlania itp.) 10/12/13 3 Biblioteka do obsługi strumieni   W C++ operacje we/wy wykonywane są za pomocą strumieni  Hierarchia klas oraz i rozmieszczenie w plikach  nagłówkowych jest następująca 10/12/13 4 Klasy niższego poziomu do obsługi  strumieni  streambuf  - abstrakcyjna klasa bazowa, z której  wywodzą się obiekty odpowiadające za bufor  strumieni  filebuf  – instancje tej klasy odpowiadają za  operacje wejścia i wyjścia dla plików oraz  umożliwiają tworzenie strumieni związanych z  tymi plikami  stringbuf  – jw. tylko w odniesieniu do tekstów, a  nie plików 10/12/13 5 Standardowe wejście/wyjście  io_base  oraz  ios  – klasy definiujące składniki każdego  strumienia, niezależnie czy to wejściowego czy  wyjściowego  istream  – klasa udostępniająca metody do odczytu i  interpretacji ze strumienia wejściowego  ostream  - klasa udostępniająca metody do zapisu do  strumienia wyjściowego  iostream  - klasa udostępniająca metody do odczytu i  zapisu ze strumienia wejściowego i wyjściowego,  odziedziczona po klasach  istream  i  ostream 10/12/13 6 Obiekty reprezentujące  standardowe wejście i wyjście  Standardowe kanały we/wy zdefiniowano jako obiekty  globalne  istream cin  – standardowe wejście  (odpowiednik  stdin  z C),  normalnie związany z klawiaturą  ostream cout  – standardowe wyjście (odpowiednik  stdout  z  C), normalnie związany z monitorem  ostream cerr  – standardowe wyjście błędów (odpowiednik  stderr  z C), normalnie związany z monitorem. Służy do  sygnalizowania błędów   Domyślnie nie jest buforowany  ostream clog  – standardowe wyjście logowania (brak  odpowiednika w C), normalnie związany z tym samym co  cerr  Domyślnie jest buforowany  Przykład cpp_10.1 10/12/13 7 Klasy strumieni służące do operacji  na plikach i tekstach  ifstream  – klasa udostępniająca interfejs do odczytu danych z  plików  ofstream  – klasa udostępniająca interfejs do zapisu danych do 

(…)

… << i >>


Przy pracy ze strumieniami wykorzystujemy przeładowane
operatory << i >> (normalnie przesunięcie bitowe w lewo i
w prawo)
Potrzebne było zdefiniowanie jakiś operatorów do
wstawiania i pobierania danych ze strumieni



Wybór padł na << i >> ponieważ sugerują one ruch przez co
ich użycie jest zgodne z naszą intuicyjną
Można się spotkać z angielskim nazwami tych operatorów
odpowiednio insert (put to) i extract (get from)
Zarówno << jaki i >> zwracają referencję do strumienia na
którym pracują

10/12/13
Możliwe jest kaskadowe łączenie tych operatorów ze sobą
8
Domniemania przy pracy ze
strumieniami predefiniowanymi

Wstawianie do strumienia (wypisywanie)





Typy całkowite (int, long ...) wypisywane są w systemie
dziesiętnym
Typy znakowe (char) wypisywane są jako pojedynczy znak
Liczby zmiennoprzecinkowe (float, double ...) wypisywane
są z dokładnością do 6 miejsc dziesiętnych (bez zbędnych
zer)
Wskaźniki (bez char*) wypisywane są szesnastkowo
Wskaźniki do char wypisywane są jako tekst, na który dany
wskaźnik pokazuje


static_cast<void*>(wsk); //wypisanie adresu
Przykład cpp_10.2
10/12/13
9
Domniemania przy pracy ze
strumieniami predefiniowanymi...

Pobieranie ze strumienia (wczytywanie…
… podstawę konwersji,
showpoint - pokaż kropkę dziesiętną,
uppercase - wielkie litery (w liczbach),
showpos - znak + w liczbach dodatnich,
scientific - notacja wykładnicza liczb zmiennoprzecinkowych.,
fixed - notacja zwykła liczb zmiennoprzecinkowych.,
unitbuf - buforowanie,
14
Formatowanie…

Modyfikacja flag za pomocą metod

setf, unsetf – niezbyt poręczny wymaga pamiętania nazw
wspomnianych flag…

Przykład cpp_10.13
10/12/13
27
Katalogi, ścieżki (i pliki)

Biblioteka standardowa języka C++ nie umożliwia
operacji na ścieżkach i katalogach

Główną przyczyną jest duża zależność tych operacji od
systemu operacyjnego


Korzystając z Boost Filesystem Library można
operować na ścieżkach, katalogach oraz plikach



Np. Struktura katalogów w UNIX i Windows są znacząco
odmienne
Należy jednak pamiętać…

Sterowanie odbywa się poprzez flagi stanu formatowania zdefiniowane jako typ
wyliczeniowy w klasie ios















10/12/13
boolalpha – format zapisu wartości logicznych,
skipws - ignoruj białe znaki,
left - justowanie lewe,
right - justowanie prawe,
internal - justowanie wewnętrzne,
dec - konwersja dziesiętna,
oct - konwersja ósemkowa,
hex - konwersja szesnastkowa,
showbase - pokaż…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz