Post on 15-Jan-2016
description
Przestrzenie nazw, Przestrzenie nazw, strumieniestrumienie
Przestrzenie nazwPrzestrzenie nazw
Przestrzeń nazw – co to takiego?Przestrzeń nazw – co to takiego?
namespacenamespace
Kiedy potrzebujemy przestrzeni nazw?Kiedy potrzebujemy przestrzeni nazw?
Przestrzenie nazw - używaniePrzestrzenie nazw - używanie
namespace mojanamespace moja{{
void printf(int);void printf(int);class plik;class plik;void fprintf(const plik&, int);void fprintf(const plik&, int);
}}
moja::printf(44);moja::printf(44);moja::plik plikwe;moja::plik plikwe;fprintf(plikwe, 31415323);fprintf(plikwe, 31415323); // wystarczy, że jeden z argumentów// wystarczy, że jeden z argumentów
// należy do przestrzeni moja, aby funkcja// należy do przestrzeni moja, aby funkcja// fprintf była najpierw szukana w przestrzni // fprintf była najpierw szukana w przestrzni
mojamoja// (reguła wyszukiwania Koeniga)// (reguła wyszukiwania Koeniga)
Przestrzenie nazw - używaniePrzestrzenie nazw - używanie Przestrzenie nazw można dowolnie rozszerzać i łączyćPrzestrzenie nazw można dowolnie rozszerzać i łączyć
w jednym plikuw jednym pliku w kilku plikachw kilku plikach
Nazwę (lub wszystkie nazwy) z przestrzeni nazw można Nazwę (lub wszystkie nazwy) z przestrzeni nazw można przenieść na globalny (lokalny) poziom widocznościprzenieść na globalny (lokalny) poziom widoczności using moja::plik; using moja::plik; using namespace moja;using namespace moja;
Nie używaj using w plikach nagłówkowych!Nie używaj using w plikach nagłówkowych! dlaczego?dlaczego? używaj kwalifikacji nazwa_namespace::nazwa_z_namespace!używaj kwalifikacji nazwa_namespace::nazwa_z_namespace!
Przestrzenie nazw – std::Przestrzenie nazw – std::
W przestrzeni nazw std:: zdefiniowana jest Biblioteka W przestrzeni nazw std:: zdefiniowana jest Biblioteka Standardowa C++ Standardowa C++ klasy strumienioweklasy strumieniowe klasy łańcuchoweklasy łańcuchowe STLSTL
Dawniej używano nagłówków (obsolete): „*.h”, „*.hpp”, „*.hxx”Dawniej używano nagłówków (obsolete): „*.h”, „*.hpp”, „*.hxx” Znacząco rozszerzona w standardzie C++11 (głównie część STL)Znacząco rozszerzona w standardzie C++11 (głównie część STL) Rozszerzenia języka i bibliotek C++11 nie są jeszcze w pełni Rozszerzenia języka i bibliotek C++11 nie są jeszcze w pełni
wspierane przez kompilatory; wykład o C++11 na przedmiocie wspierane przez kompilatory; wykład o C++11 na przedmiocie MiNWO poświęcony będzie nowemu standardowi C++MiNWO poświęcony będzie nowemu standardowi C++
Książki o STL i bibliotece Książki o STL i bibliotece standardowej C++standardowej C++
Nicolai M. Josuttis: C++ Standard Library: A tutorial and Nicolai M. Josuttis: C++ Standard Library: A tutorial and Reference, 1st, Pearson 1999,Reference, 1st, Pearson 1999,
przykłady: przykłady: http://www.josuttis.com/libbook/examples.ziphttp://www.josuttis.com/libbook/examples.zip (Polska wersja: Nicolai M. Josuttis: C++ Biblioteka standardowa (Polska wersja: Nicolai M. Josuttis: C++ Biblioteka standardowa
Podręcznik Programisty, Helion 2003, przykłady: Podręcznik Programisty, Helion 2003, przykłady: ftp://ftp.helion.pl/przyklady/cpbspp.zipftp://ftp.helion.pl/przyklady/cpbspp.zip))
Nicolai M. Josuttis: C++ Standard Library: A tutorial and Nicolai M. Josuttis: C++ Standard Library: A tutorial and Reference, 2nd, Addison Wesley Longman 2012,Reference, 2nd, Addison Wesley Longman 2012,(uwzględnia standard C++11)(uwzględnia standard C++11)
Grębosz J.: Pasja C++, RM, W-waGrębosz J.: Pasja C++, RM, W-wa
Inne (wspomniane na pierwszym wykładzie o C++,Inne (wspomniane na pierwszym wykładzie o C++,w tym ANSI/ISO C++ standard)w tym ANSI/ISO C++ standard)
Standardowe wejście/wyjście C++Standardowe wejście/wyjście C++
Biblioteka IOStream (iostream)Biblioteka IOStream (iostream) najstarsza część biblioteki standardowejnajstarsza część biblioteki standardowej opracowana przez AT&Topracowana przez AT&T
obsługa lokalizacjiobsługa lokalizacji obsługa typówobsługa typów
char * (zgodność z wczesnymi implementacjami)char * (zgodność z wczesnymi implementacjami) stringstring
iostream to biblioteka wzorców z obsługą sytuacji iostream to biblioteka wzorców z obsługą sytuacji wyjątkowychwyjątkowych
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
KlasyKlasy
strumień wejściowy strumień wejściowy istreamistream (wywiedziony ze (wywiedziony ze wzorca: basic_istream<char>) wzorca: basic_istream<char>)
strumień wyjściowy strumień wyjściowy ostreamostream (wywiedziony ze (wywiedziony ze wzorca: basic_ostream<char>)wzorca: basic_ostream<char>)
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
Obiekty (nagłówek: <iostream>Obiekty (nagłówek: <iostream>
istream istream cincin; ; //stdin , buforowany//stdin , buforowany
ostream ostream coutcout; ; //stdout, buforowany//stdout, buforowany
ostream ostream cerrcerr; ; //stderr, //stderr, niebuforowanyniebuforowany//skojarzony z konsolą//skojarzony z konsolą
ostream ostream clogclog; ; //bez odp. w C, buforowany//bez odp. w C, buforowany//skojarzony z konsolą//skojarzony z konsolą
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy Operatory << i >>Operatory << i >>
przeciążone dla typów podstawowych, w tym char *, void *, bool,przeciążone dla typów podstawowych, w tym char *, void *, bool, można przeciążać dla własnych klas.można przeciążać dla własnych klas.
istream is; istream is; ostream os;ostream os;
int i; double d;int i; double d;
os<<i; os<<i; is>>i;is>>i;os<<d;os<<d; is>>d;is>>d;os<<i<<d;os<<i<<d; is>>i>>d;is>>i>>d;cout<<i<<d;cout<<i<<d; cin>>i>>d;cin>>i>>d;cout<< cout<< ""\n\ni wynosi i wynosi " " << i << << i << "" a d to a d to "" << d << << d << " " \n\n"";;
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy Manipulatory Manipulatory
to są obiekty zdefiniowane aby modyfikować domyślne zachowanie to są obiekty zdefiniowane aby modyfikować domyślne zachowanie strumienia (np. formatowanie), wyprowadzić znak końca wiersza itp.strumienia (np. formatowanie), wyprowadzić znak końca wiersza itp.
programista może definiować własne manipulatoryprogramista może definiować własne manipulatory
endl endl //koniec wiersza i wyczyszczenie (flush()) bufora strumienia//koniec wiersza i wyczyszczenie (flush()) bufora strumienia
cout<< cout<< ""\n\ni wynosi i wynosi " " << i << << i << "" a d to a d to "" << d << endl; << d << endl;
endsends // // ""\0\0"";;wsws // dla istream pobierz (pomiń) białe znaki// dla istream pobierz (pomiń) białe znakiflushflushdec, hex, oct dec, hex, oct
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
ios_baseios_base
basic_streambuf<> basic_streambuf<>
basic_ios<>basic_ios<> virtualvirtual
basic_istream<>basic_istream<> basic_ostream<> basic_ostream<>
basic_iostream<>basic_iostream<>
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
ios_baseios_base
wspólny interfejs klas strumieni w zakresie wspólny interfejs klas strumieni w zakresie niezależnym od typu elementów strumienianiezależnym od typu elementów strumienia definicja stanu strumieniadefinicja stanu strumienia format przetwarzanych danycformat przetwarzanych danyc
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
basic_ios<>basic_ios<>
wspólny interfejs klas strumieni w zakresie wspólny interfejs klas strumieni w zakresie zależnym od typu elementów strumieniazależnym od typu elementów strumienia definicja bufora danych strumienia (klasa definicja bufora danych strumienia (klasa
pochodna wzorca basic_streambuf<> dla pochodna wzorca basic_streambuf<> dla konkretnego typu elementów strumienia, wraz z konkretnego typu elementów strumienia, wraz z definicjami operacji faktycznego odczytu/zapisu definicjami operacji faktycznego odczytu/zapisu danych)danych)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
basic_istream<>basic_istream<>basic_ostream<>basic_ostream<>
wzorce obiektów odpowiednio tylko do wzorce obiektów odpowiednio tylko do odczytu/zapisuodczytu/zapisu dziedziczą dziedziczą wirtualniewirtualnie wzorzec basic_ios<> wzorzec basic_ios<> dla argumentu char wywiedzione są klasy dla argumentu char wywiedzione są klasy
odpowiednio istream i ostreamodpowiednio istream i ostream nagłówki odpowiednio <istream> i <ostream>nagłówki odpowiednio <istream> i <ostream>
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
basic_iostream<>basic_iostream<>
wzorce obiektów do odczytu i zapisuwzorce obiektów do odczytu i zapisu nagłówek <istream>nagłówek <istream>
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
rezultat operacji strumieniowychrezultat operacji strumieniowych stan strumienia (widoczny w zakresie klasy stan strumienia (widoczny w zakresie klasy
ios_base, stałe typu iostate)ios_base, stałe typu iostate) goodbitgoodbit // poprawny wynik operacji// poprawny wynik operacji // poniższe bity wyzerowane// poniższe bity wyzerowane eofbiteofbit // napotkano koniec (znak końca) pliku// napotkano koniec (znak końca) pliku failbitfailbit // operacja zakończona niepowodzeniem// operacja zakończona niepowodzeniem // kolejne też będą się kończyć // kolejne też będą się kończyć
niepow.niepow. // trzeba wyzerować failbit// trzeba wyzerować failbit badbitbadbit // niepowodzenie i uszkodzenie strumienia// niepowodzenie i uszkodzenie strumienia
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
rezultat operacji strumieniowych - metodyrezultat operacji strumieniowych - metody bool good()bool good() // poprawny wynik operacji// poprawny wynik operacji bool eof() bool eof() // napotkano koniec (znak końca) pliku// napotkano koniec (znak końca) pliku bool fail() bool fail() // operacja zakończona niepowodzeniem// operacja zakończona niepowodzeniem bool bad() bool bad() // niepowodzenie i uszkodzenie strumienia// niepowodzenie i uszkodzenie strumienia rdstate()rdstate() // odczytaj stan strumienia// odczytaj stan strumienia clear()clear() // ustaw na stan goodbit// ustaw na stan goodbit clear(state)clear(state) // ustaw na stan state// ustaw na stan state setstate(state)setstate(state) // ustaw znaczniki state, nie rusz // ustaw znaczniki state, nie rusz
// pozostałych// pozostałych
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły rezultat operacji strumieniowych – operatory rezultat operacji strumieniowych – operatory
konwersjikonwersji operator void* ()operator void* () // odpowiednik !fail()// odpowiednik !fail()
if (cin>>x) if (cin>>x) // lub: while(cin>>x)// lub: while(cin>>x){ { // x odczytane poprawnie// x odczytane poprawnie}}
operator ! () operator ! () // odpowiednik fail()// odpowiednik fail()
if ( !!(cin>>x)) if ( !!(cin>>x)) // lub: while( !!(cin>>x))// lub: while( !!(cin>>x)){ { // x odczytane poprawnie// x odczytane poprawnie}}
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły rezultat operacji strumieniowych – generowanie rezultat operacji strumieniowych – generowanie
wyjątkówwyjątków definicja błędnych sytuacji powodujących zgłoszenie definicja błędnych sytuacji powodujących zgłoszenie
wyjątku (metoda klasy strumienia):wyjątku (metoda klasy strumienia):
exceptions(flags)exceptions(flags)
sprawdzenie błędnych sytuacji powodujących zgłoszenie sprawdzenie błędnych sytuacji powodujących zgłoszenie wyjątku (metoda klasy strumienia):wyjątku (metoda klasy strumienia):
exceptions() exceptions()
jeżeli zwrócona wartość ==goodbit, to wyjątki nie są generowanejeżeli zwrócona wartość ==goodbit, to wyjątki nie są generowane
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o formatowane a nieformatowanei/o formatowane a nieformatowane
operatory << i >> operatory << i >> domyślniedomyślnie obsługują i/o obsługują i/o formatowane (określona precyzja, pomijanie formatowane (określona precyzja, pomijanie białych znaków itp.)białych znaków itp.)
metody get*/put*/read*/write* i in. obsługują i/o metody get*/put*/read*/write* i in. obsługują i/o nieformatowanenieformatowane
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o formatowanei/o formatowane metody dla znaczników formatu (ios::fmtflags)metody dla znaczników formatu (ios::fmtflags)
setf(flags);setf(flags); // ustaw znacznik(i) flags// ustaw znacznik(i) flags setiosflags(flags);setiosflags(flags); // odpowiednik setf(flags);// odpowiednik setf(flags); setf(flags, mask);setf(flags, mask); // ustaw znacznik(i) flags w grupie mask// ustaw znacznik(i) flags w grupie mask resetiosflags(mask);resetiosflags(mask); // odpowiednik setiosflags(0, mask);// odpowiednik setiosflags(0, mask); unsetf(flags);unsetf(flags); // wyczyść znacznik(i) flags// wyczyść znacznik(i) flags flags();flags(); // zwróć aktualne znacznik(i) flags// zwróć aktualne znacznik(i) flags flags(flags);flags(flags); // ustaw znaczniki flags, wyzeruj // ustaw znaczniki flags, wyzeruj
pozosałepozosałe copyfmt(stream)copyfmt(stream) // kopiuj znaczniki ze strumienia stream// kopiuj znaczniki ze strumienia stream
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły i/o formatowane - i/o formatowane -
znaczniki i maski znaczniki i maski boolalphaboolalpha // znacznik: typ bool liczbowy (0/1) czy opisowy// znacznik: typ bool liczbowy (0/1) czy opisowy // true/false// true/false
// zdefiniowano również manipulatory boolalpha i noboolalpha// zdefiniowano również manipulatory boolalpha i noboolalpha
adjustfieldadjustfield // maska: wyrównanie (left, right, internal)// maska: wyrównanie (left, right, internal) leftleft // znacznik: wyrównanie do lewej// znacznik: wyrównanie do lewej rightright // znacznik: wyrównanie do prawej// znacznik: wyrównanie do prawej internalinternal // znacznik: wyrównanie znaku liczby do lewej// znacznik: wyrównanie znaku liczby do lewej // reszta wartości do prawej// reszta wartości do prawej
// zdefiniowano również manipulatory left, right i internal// zdefiniowano również manipulatory left, right i internal
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły i/o formatowane - i/o formatowane -
znaczniki i maski znaczniki i maski showposshowpos // poprzedź liczby dodatnie znakiem „+”// poprzedź liczby dodatnie znakiem „+”
// zdefiniowano również manipulatory showpos i noshowpos // zdefiniowano również manipulatory showpos i noshowpos
uppercaseuppercase // liczby szcesnastkowe pisz dużymi literami// liczby szcesnastkowe pisz dużymi literami// zdefiniowano również manipulatory uppercase i nouppercase // zdefiniowano również manipulatory uppercase i nouppercase
basefieldbasefield // maska: podstawa systemu liczbowego// maska: podstawa systemu liczbowego dec, hex octdec, hex oct // znaczniki systemu liczbowego// znaczniki systemu liczbowego (pusty)(pusty) // znacznik: zapisuj dziesiętnie, odczytuj zgodnie// znacznik: zapisuj dziesiętnie, odczytuj zgodnie // z prefiksem liczby 0x – hex, 0 – oct, // z prefiksem liczby 0x – hex, 0 – oct,
else: decelse: dec// zdefiniowano również manipulatory dec hex i oct // zdefiniowano również manipulatory dec hex i oct
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły i/o formatowane - i/o formatowane -
znaczniki i maski znaczniki i maski showbaseshowbase // wyprowadź prefiks liczby dla systemu liczbowego// wyprowadź prefiks liczby dla systemu liczbowego
// zdefiniowano również manipulatory showbase i noshowbase// zdefiniowano również manipulatory showbase i noshowbase
floatfieldfloatfield // maska: format zmiennego przecinka// maska: format zmiennego przecinka fixedfixed // ułamek dziesiętny// ułamek dziesiętny scientificscientific // z wykładnikiem// z wykładnikiem (pusty)(pusty) // wybierz sam najlepszy// wybierz sam najlepszy
// zdefiniowano również manipulatory fixed i scientific// zdefiniowano również manipulatory fixed i scientific
showpointshowpoint // dla liczby zmiennoprzecinkowej zawsze // dla liczby zmiennoprzecinkowej zawsze // wyprowaź kropkę// wyprowaź kropkę
// zdefiniowano również manipulatory showpoint i noshowpoint// zdefiniowano również manipulatory showpoint i noshowpoint
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o formatowanei/o formatowane precision()precision() // zwróć dokładność dla liczb// zwróć dokładność dla liczb
// zmiennorzecinkowych, // zmiennorzecinkowych,
// domyślnie 6 miejsc po // domyślnie 6 miejsc po przecinkuprzecinku
precision(p)precision(p) // ustaw dokładność dla liczb// ustaw dokładność dla liczb
// zmiennorzecinkowych// zmiennorzecinkowych
// jest również manipulator // jest również manipulator setprecision(w)setprecision(w)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły i/o formatowane - i/o formatowane -
znacznikiznaczniki skipwsskipws // pomijaj białe znaki// pomijaj białe znaki
// zdefiniowano również manipulatory skipws i noskipws// zdefiniowano również manipulatory skipws i noskipws
unitbufunitbuf // opróżnij bufor wyjściowy // opróżnij bufor wyjściowy // po każdym <<// po każdym <<
// zdefiniowano również manipulatory unitbuf i nounitbuf// zdefiniowano również manipulatory unitbuf i nounitbuf
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o formatowanei/o formatowane width()width() // zwróć szerokość pola (liczba znaków)// zwróć szerokość pola (liczba znaków) // znaczy: nie mniej niż// znaczy: nie mniej niż width(w)width(w) // ustaw szerokość pola (liczba znaków)// ustaw szerokość pola (liczba znaków) // znaczy: nie mniej niż// znaczy: nie mniej niż
// jest również manipulator setw(w)// jest również manipulator setw(w)
char buf[80];char buf[80];cin >> setw(sizeof(buffer)) >> buffer;cin >> setw(sizeof(buffer)) >> buffer;
fill() fill() // zwróć znak dopelniajacy pole// zwróć znak dopelniajacy pole fill(c) fill(c) // ustaw znak dopelniajacy pole// ustaw znak dopelniajacy pole
// jest również manipulator setfill(c)// jest również manipulator setfill(c)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o formatowanei/o formatowane metody dla lokalizacji programów, znaków metody dla lokalizacji programów, znaków
międzynarodowych, itp.międzynarodowych, itp. są … opisane w dokumentacji ;-)są … opisane w dokumentacji ;-)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o nieformatowanei/o nieformatowane metoda getmetoda get
int get();int get(); // odczytaj jeden znak, lub EOF// odczytaj jeden znak, lub EOF // odpowiednik getchar()/getc()// odpowiednik getchar()/getc()
istream& get(char &c);istream& get(char &c); // nie ma EOF, jest stan str.// nie ma EOF, jest stan str. istream& get(char *pc, streamsize cnt)istream& get(char *pc, streamsize cnt) istream& get(char *pc, streamsize cnt, char delim)istream& get(char *pc, streamsize cnt, char delim) // wczytaj do bufora pc, zatrzymaj się po przeczytaniu// wczytaj do bufora pc, zatrzymaj się po przeczytaniu // cnt-1 znaków, lub napotkaniu znaku delim// cnt-1 znaków, lub napotkaniu znaku delim // nie odczytuj delim, dopisz do bufora ‘\0’// nie odczytuj delim, dopisz do bufora ‘\0’ istream& ignore(streamsize cnt, char delim) istream& ignore(streamsize cnt, char delim) // kilka wariantów, pobierz ale nie zapisuj// kilka wariantów, pobierz ale nie zapisuj
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o nieformatowanei/o nieformatowane metoda getlinemetoda getline
istream& getline(char *pc, streamsize cnt)istream& getline(char *pc, streamsize cnt) istream& getline(char *pc, streamsize cnt, char delim)istream& getline(char *pc, streamsize cnt, char delim) // wczytaj do bufora pc, zatrzymaj się po przeczytaniu// wczytaj do bufora pc, zatrzymaj się po przeczytaniu // cnt-1 znaków, lub napotkaniu odpowiednio// cnt-1 znaków, lub napotkaniu odpowiednio // konca wiersza lub znaku delim// konca wiersza lub znaku delim // delim // delim jestjest odczytywany ze strumienia odczytywany ze strumienia
// jeżeli odczytano mniej niż cnt znaków to ustaw failbit// jeżeli odczytano mniej niż cnt znaków to ustaw failbit
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o nieformatowanei/o nieformatowane metody read i readsome – wybrane aspektymetody read i readsome – wybrane aspekty
istream& read(char *pc, streamsize cnt)istream& read(char *pc, streamsize cnt)
// odczytaj cnt znaków// odczytaj cnt znaków
streamsize readsome(char *pc, streamsize cnt)streamsize readsome(char *pc, streamsize cnt)
// zwróć liczbę przeczytanych znaków,// zwróć liczbę przeczytanych znaków,
// odczytaj nie więcej niż cnt-1 znaków// odczytaj nie więcej niż cnt-1 znaków
// // pobierz tylko te znaki, które już są w buforze pobierz tylko te znaki, które już są w buforze (niedestrukcyjne)(niedestrukcyjne)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły i/o nieformatowanei/o nieformatowane
int peek(char *pc, streamsize cnt)int peek(char *pc, streamsize cnt) // odczytaj następny znak, ale nie pobieraj go z bufora// odczytaj następny znak, ale nie pobieraj go z bufora
istream& unget()istream& unget() // zwróć ostatnio odczytany znak// zwróć ostatnio odczytany znak // zależnie od implementacji zadziała 1 lub wiecej// zależnie od implementacji zadziała 1 lub wiecej
// razy pod rząd// razy pod rząd// jeżeli nie powiedzie się to ustaw badbit// jeżeli nie powiedzie się to ustaw badbit
istream& putback(char c)istream& putback(char c) // j.w., ale jeżeli c nie jest ostatnio pobranym znakiem // j.w., ale jeżeli c nie jest ostatnio pobranym znakiem
// to ustaw badbit// to ustaw badbit
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
i/o nieformatowanei/o nieformatowane
ostream& put(char c)ostream& put(char c) // zapisz c do strumienia// zapisz c do strumienia
ostream& write(const char *pc, streamsize cnt)ostream& write(const char *pc, streamsize cnt) // zapisz cnt znakow od adresu pc do strumienia// zapisz cnt znakow od adresu pc do strumienia // nie dopisuj (automatycznie) \0// nie dopisuj (automatycznie) \0
ostream& flush()ostream& flush()
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
Klasy strumieni plikowychKlasy strumieni plikowych strumień wejściowy strumień wejściowy ifstreamifstream (wywiedziony ze (wywiedziony ze
wzorca: basic_ifstream<char> /pochodny wzorca: basic_ifstream<char> /pochodny basic_istream<char> /) basic_istream<char> /)
strumień wyjściowy strumień wyjściowy ofstreamofstream (wywiedziony ze (wywiedziony ze wzorca: basic_ofstream<char> /pochodny wzorca: basic_ofstream<char> /pochodny basic_ostream<char> /)basic_ostream<char> /)
strumień we/wy strumień we/wy fstreamfstream (wywiedziony ze wzorca: (wywiedziony ze wzorca: basic_fstream<char> /pochodny basic_fstream<char> /pochodny basic_iostream<char> /)basic_iostream<char> /)
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
int i;int i;
ifstream plikwe(„plik.txt”);ifstream plikwe(„plik.txt”);
if (!plikwe)if (!plikwe)
cout<<„nie otworzylem pliku”;cout<<„nie otworzylem pliku”;
elseelse
plikwe>>i;plikwe>>i;
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
Znaczniki dla plików (widoczne w zakresie std::ios)Znaczniki dla plików (widoczne w zakresie std::ios) argumenty konstruktora: fstream(nazwa, znaczniki=def)argumenty konstruktora: fstream(nazwa, znaczniki=def)
inin // znacznik: strumień wejściowy domyślny dla ifstream// znacznik: strumień wejściowy domyślny dla ifstream outout // znacznik: strumień wyjściowy domyślny dla // znacznik: strumień wyjściowy domyślny dla
ofstreamofstream appapp // z.: dla pliku wyjściowego ustaw się na końcu pliku// z.: dla pliku wyjściowego ustaw się na końcu pliku ateate // z.: ustaw się na końcu pliku// z.: ustaw się na końcu pliku outout // z.: usuń zawartość pliku (jeżeli niepusty)// z.: usuń zawartość pliku (jeżeli niepusty) binarybinary // z.: tryb binarny (nie tłumacz CR LF)// z.: tryb binarny (nie tłumacz CR LF)
ifstream ibin(„data.bin”, std::ios::in ifstream ibin(„data.bin”, std::ios::in || std::ios::binary); std::ios::binary);
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
Metody dla strumieni plikowychMetody dla strumieni plikowych openopen // ( nazwa_pliku [, znaczniki] )// ( nazwa_pliku [, znaczniki] ) closeclose // ()// () is_openis_open // czy skojarzony z otwartym plikiem?// czy skojarzony z otwartym plikiem? tellg/tellptellg/tellp // pobierz aktualną pozycją odczytu/zapisu// pobierz aktualną pozycją odczytu/zapisu seekg/seekpseekg/seekp // seek dla odczytu/zapisu, // seek dla odczytu/zapisu, // przeciążone wersje: poz. // przeciążone wersje: poz.
względna/bezwzględnawzględna/bezwzględna
ifstream ibin(„data.bin”, std::ios::in ifstream ibin(„data.bin”, std::ios::in || std::ios::binary); std::ios::binary);
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
Klasy strumieni plikowychKlasy strumieni plikowych szczegóły są opisane w dokumentacji … ;-) szczegóły są opisane w dokumentacji … ;-)
Biblioteka IOStream – podstawyBiblioteka IOStream – podstawy
Klasy strumieni pamięciowych (łańcuchowych)Klasy strumieni pamięciowych (łańcuchowych) strumień wejściowy strumień wejściowy istringstreamistringstream (wywiedziony ze (wywiedziony ze
wzorca: basic_istringstream<char> /pochodny wzorca: basic_istringstream<char> /pochodny basic_istream<char> /) basic_istream<char> /)
strumień wyjściowy strumień wyjściowy ostringstreamostringstream (wywiedziony ze (wywiedziony ze wzorca: basic_ostringstream<char> /pochodny wzorca: basic_ostringstream<char> /pochodny basic_ostream<char> /)basic_ostream<char> /)
strumień we/wy strumień we/wy stringstreamstringstream (wywiedziony ze wzorca: (wywiedziony ze wzorca: basic_stringstream<char> /pochodny basic_iostream<char> basic_stringstream<char> /pochodny basic_iostream<char> /)/)
Biblioteka IOStream – szczegółyBiblioteka IOStream – szczegóły
Klasy strumieni pamięciowychKlasy strumieni pamięciowych szczegóły są opisane w dokumentacji … ;-) szczegóły są opisane w dokumentacji … ;-)