• Nie Znaleziono Wyników

doprzekazywaniadanychsªu»¡operatory >> i << strumie«wej±ciowyodczytujebajtyzurz¡dzeniawej±ciowego,odpowiedniojeformatujeizwraca strumie«wyj±ciowyzamieniaprzekazanemudane,zmienne,stringi,obiekty,wska¹nikiitp,nastringiiwysyªajedourz¡dzeniawyj±ciowego komuni

N/A
N/A
Protected

Academic year: 2021

Share "doprzekazywaniadanychsªu»¡operatory >> i << strumie«wej±ciowyodczytujebajtyzurz¡dzeniawej±ciowego,odpowiedniojeformatujeizwraca strumie«wyj±ciowyzamieniaprzekazanemudane,zmienne,stringi,obiekty,wska¹nikiitp,nastringiiwysyªajedourz¡dzeniawyj±ciowego komuni"

Copied!
12
0
0

Pełen tekst

(1)

Strumienie

strumie« jest obiektem który formatuje i przechowuje bajty

opakowuje komunikacj¦ z peryferiami

komunikacja odbywa si¦ przy pomocy stringów

strumie« wyj±ciowy zamienia przekazane mu dane, zmienne, stringi, obiekty, wska¹niki itp, na stringi i wysyªa je do urz¡dzenia wyj±ciowego

strumie« wej±ciowy odczytuje bajty z urz¡dzenia wej±ciowego, odpowiednio je formatuje i zwraca

do przekazywania danych sªu»¡ operatory >> i <<

(2)

Strumienie

standardowo zdeniowane s¡ strumienie (klasy) do komunikacji z konsol¡/klawiatur¡ (iostream), z plikami (iofstream), z pami¦ci¡ (iostrstream) i ze stringami (iostringstream)

standardowo zdeniowane s¡ te» strumienie cin i cout

na podstawie standardowych klas deniuje si¦ wªasne klasy, na przykªad strumie« do komunikacji z czujnikiem temperatury itp

manipulatory: endl, hex, ws, flush

(3)

Strumienie

getline(), get() - metody strumienia wej±ciowego -

pobieranie kawaªków danych ze strumienia, typowo caªej linijki, bez formatowania - pozwalaj¡ unikn¡¢ problemów w przypadku niewªa±ciwych danych wej±ciowych

read(), write() pozwalaj¡ manipulowa¢ poszczególnymi bajtami

status strumienia: good(), eof(), fail(), bad()

bity statusu: goodbit, eofbit, failbit, badbit mo»na kasowa¢: funkcja ios::clear()

mo»na stosowa¢ konstrukcje while(cin) itp

(4)

prostyplik.cpp

#include<iostream >

#include<fstream >

using namespace s t d ; i n t main ( )

{ const i n t sz = 100;

char buf [ sz ] ;

{ i f s t r e a m i n ( " p r o s t y p l i k . cpp " ) ; o f s t r e a m out ( " p r o s t y p l i k . out " ) ; i n t i = 1 ; // l i c z n i k l i n i i

(5)

prostyplik.cpp

while ( i n . get ( buf , sz ) ) { i n . get ( ) ;

cout << buf << e n d l ;

out << i++ << " : " << buf << e n d l ; }

} // d e s t r u k t o r y obiektów i n i out p i l n u j ¡ // z a m k n i ¦ c i a p l i k ó w

(6)

prostyplik.cpp

i f s t r e a m i n ( " p r o s t y p l i k . out " ) ; while ( i n . g e t l i n e ( buf , sz ) ) {

char ∗cp = buf ; while (∗ cp != ' : ' )

cp++;

cp += 2 ; // z j e ± ¢ " : "

cout << cp << e n d l ; }

}

(7)

Strumienie

tryb otwarcia plików mo»na kontrolowa¢: ios::in, ios::out, ios::app, ios::ate, ios::nocreate, ios::noreplace, ios::trunc, ios::binary

gªównym elementem strumienia jest bufor danych. Normalnie nie potrzebujemy r¦cznie komunikowa¢ si¦ z buforem

czasem dobrze jest komunikowa¢ si¦ z buforem bezpo±rednio - bufor reprezentowany jest przez obiekt streambuf

metoda rdbuf() strumienia zwraca wska¹nik do zwi¡zanego z tym strumieniem streambuf

Przykªad: wypisz1.cpp

(8)

Strumienie

mo»na posªugiwa¢ si¦ buforem strumienia docelowego

metoda ignore() odczytuje i pomija znaki - domy±lnie jeden

in.ignore() potrzebne jest do usuni¦cia znaków ko«ca linii Przykªad: wypisz2.cpp

(9)

Przeszukiwanie strumienia

strumie« wie w jakim miejscu bufora obecnie si¦ znajduje - gdzie tra nast¦pny bajt lub sk¡d zostanie pobrany

zmienna typu streampos sªu»y do przechowywania pozycji w strumieniu. Zmienn¡ tego typu zwracaj¡ metody tellp() (ostream - wska¹nik do put) i tellg() (istream - wska¹nik do get)

zmienna streampos mo»e by¢ u»ywana z jednoparametrowymi funkcjami seekp() i seekg() do ustawienia bie»¡cego miejsca w buforze (ustwienie absolutne)

dwuparametrowe wersje powy»szych funkcji sªu»¡ do przej±cia konkretnej ilo±ci miejsc (pierwszy parametr - dodatni lub ujemny) od konkretnej pozycji w buforze (drugi parametr)

mo»liwe pozycje: ios::beg - pocz¡tek strumienia, ios::cur - bie»¡ce miejsce w strumieniu, ios::end - koniec strumienia Przykªad: szukaj1.cpp

(10)

Przeszukiwanie strumienia

plik mo»e sªu»y¢ jednocze±nie do odczytu i zapisu

wymaga to u»ycia bufora, kompilator nie pozwoli pisa¢ do strumienia wej±ciowego

u»ywamy konstrukcji:

i f s t r e a m i n ( "nazwa−p l i k u " , i o s : : i n | i o s : : out ) ; ostream out ( i n . r d b u f ( ) ) ;

Przykªad: szukaj2.cpp

(11)

Strumienie stringowe

przy pomocy schematu strumienia mo»emy komunikowa¢ si¦

ze stringami

biblioteka strstream deniuje strumienie do komunikowania si¦ z tablicami znaków bezpo±rednio w pami¦ci - to s¡ stringi starego typu, zako«czone znakiem '\0'

i s t r s t r e a m : : i s t r s t r e a m ( char ∗ buf ) ;

i s t r s t r e a m : : i s t r s t r e a m ( char ∗ buf , i n t s i z e ) ;

pierwszy konstruktor oczekuje wska¹nika do tablicy znaków zako«czonej znakiem '\0'

drugi konstruktor nie potrzebuje znaku '\0' w tablicy - mo»na j¡ odczytywa¢ do buf[size]

Przykªad: istring.cpp

(12)

Strumienie stringowe

strumie« wyj±ciowy korzysta z konstruktora:

o s t r s t r e a m : : o s t r s t r e a m ( char ∗ , int , i n t = i o s : : out ) ;

pierwszy parametr to wska¹nik do istniej¡cej tablicy znaków (trzeba zarezerwowa¢ pami¦¢ wcze±niej)

drugi parametr to rozmiar tablicy

trzeci parametr to tryb dost¦pu. Domy±lnie zapisywanie zacznie si¦ na pocz¡tku bufora

je»eli ustalimy tryb na ios::ate lub ios::app to strumie«

wyszuka znak '\0' w buforze (koniec istniej¡cego stringu) i od tego miejsca dopisze

strumie« nie dopisuje automatycznie znaku '\0'. Trzeba to zrobi¢ r¦cznie aby zako«czy¢ string. Sªu»y do tego

manipulator ends Przykªad: ostring.cpp

Cytaty

Powiązane dokumenty

Świadectwem nastrojów i przemian w obrębie rodziny i małżeństwa, cha- rakterystycznych dla pierwszych dekad PRL, będzie niniejszy artykuł, którego celem jest

Correlations between the meat plasticity and the daily gain or the carcass traits as stated within the genotype groups of pigs (r w ) and within the overall

Relationships among somatic cell count, California mastitis test, impedance and bacteriological status of milk in goats and sheep in early lactation.. Subclinical mastitis

Metody stosowane w magnetyzmie środowiska (np. magnetometria glebo- wa) opierają się na pomiarach zestawu parametrów magnetycznych, które okre- ślają koncentrację

Obecnie stosuje siê wiele ró¿nych mierników s³u¿¹cych do oceny wielkoœci utraconego potencja³u ¿yciowego (18), gdzie tak¿e mo¿na wykorzystaæ znajomoœæ parametrów

24 i 27 pa¹dziernika 2014 Semestr zimowy.

Już przy okazji wskaźników zauważyliśmy, że wykorzystanie ich jako parametrów funkcji może przyspieszyć działanie programu. Zamiast całych obiektów funkcja otrzymuje

Udowodnij, »e je±li w zbiorze uporz¡dkowanym istnieje element najwi¦kszy, to jest on jedynym elementem maksymalnym?. Czy twierdzenie odwrotne