Narzędzia użytkownika

Narzędzia witryny


klasy_bazowe_dla_strumieni

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Last revision Both sides next revision
klasy_bazowe_dla_strumieni [2008/12/14 20:07]
siemionides
klasy_bazowe_dla_strumieni [2008/12/14 20:29]
siemionides
Linia 15: Linia 15:
  
  
-==== ios_base =====+==== Klasa ios_base =====
 ios_base (Input Output State) jest podstawową klasą bazową dla pojęcia strumienia i operacji z nim związnych. Dostarcza pojęcie //flagi stanu formatowania//,​ a także narzędzi do jego wykorzystania. ​ ios_base (Input Output State) jest podstawową klasą bazową dla pojęcia strumienia i operacji z nim związnych. Dostarcza pojęcie //flagi stanu formatowania//,​ a także narzędzi do jego wykorzystania. ​
  
Linia 346: Linia 346:
  
  
-==== basic_os ====+==== Klasa basic_os ====
 Klasa dziedzicząca po ios_base. Klasa dziedzicząca po ios_base.
  
Linia 384: Linia 384:
  
   
-==== klasa ios ====+==== Klasa ios ====
 Klasa dziedzicząca po basic_ios.\\ Klasa dziedzicząca po basic_ios.\\
  
Linia 395: Linia 395:
 ios::​failbit\\ ios::​failbit\\
 ''​ ''​
-==== istream ====+==== Klasa istream ====
  
 === Spis omówionych definicji metod klasy istream === === Spis omówionych definicji metod klasy istream ===
Linia 451: Linia 451:
  
  
-==istream&​ get(streambuf&​ sb) - pobiera ​ze strumienia znaki i lokuje je w buforze strumieniowym sb do momentu napotkania znaku ogranicznika (domyslnie znak konca wiersza '​\n'​) badz znaku konca pliku. +==istream&​ get(streambuf&​ sb)==  
-istream&​ get(streambuff&​ sb, char delim) ​- podobnia ​jak wyżej, z tymże przyjmuje znak ogranicznika w argumencie delim.+Pobiera ​ze strumienia znaki i lokuje je w buforze strumieniowym sb do momentu napotkania znaku ogranicznika (domyslnie znak konca wiersza '​\n'​) badz znaku konca pliku. 
 + 
 + 
 +==istream&​ get(streambuff&​ sb, char delim)== 
 +Podobnie ​jak wyżej, z tymże przyjmuje znak ogranicznika w argumencie delim. 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +==istream&​ getline (char* s, streamsize n )== 
 +Pobiera (n-1) znakow ze strumienia wejsciowego i lokuje je do tablicy rozpoczynajacej sie s. 
 + 
 + 
 +==istream&​ getline (char* s, streamsize n, char delim )== 
 +Pobiera (n-1) znakow ze strumienia wejsciowego badz pobiera je do momentu napotkania znaku ogranicznika delim i lokuje je do tablicy rozpoczynajacej sie s. 
 + 
 +<copy cpp> 
 +//​przyklad 
 +void uzyj_getline_gcout() 
 +
 + char tab[10]; 
 + cout << "Podaj tekst o dlugosc do 10 znakow :" << endl; 
 + cin.getline(tab,​ 10); 
 + cout << tab << endl <<"​A operowales przed chwila na ilosci znakow wynoszacej :  " << cin.gcount() << endl; 
 +
 +</​copy>​ 
 + 
 + 
 +==istream::​streamsize gcount() const== 
 + 
 +Zwraca ilość znaków wyciągniętych ze strumienia wejściowego podczas istotniej operacji pobrania z niego niesformatowanych danych. 
 + 
 +Przyklad powyzej, z getline() 
 + 
 + 
 +==istream::​istream& ​ ignore ( streamsize n = 1, int delim = EOF )== 
 +Pobiera ze strumienia wejsciowego ilosc znakow podana przez argument n i pomija je. Pobieranie zatrzymuje sie w momencie napotkania na znak ogranicznika delim. 
 + 
 +<copy cpp> 
 +//przyklad  
 +char first, last; 
 + 
 +cout << "Podaj imie i nazwisko: "; 
 + 
 +first=cin.get();​ 
 +cin.ignore(256,'​ '); 
 + 
 +last=cin.get();​ 
 + 
 +cout << "Twoje inicjaly to  " << first << last << endl; 
 +</​copy>​ 
 + 
 + 
 + 
 + 
 +==istream:: int peek()== 
 + 
 +Odczytuje i zwraca kolejny znak ze strumienia, bez usuwania go stamtąd. 
 + 
 +<copy cpp> 
 +//​przyklad 
 +char c; 
 +int n; 
 +char str[256]; 
 + 
 +cout << "Wpisz liczbe lub slowo: "; 
 +c=cin.peek();​ 
 + 
 +if ( (c >= '​0'​) && (c <= '​9'​) ) 
 +
 +  cin >> n; 
 +  cout << "​Wpisales liczbe ​ " << n << endl; 
 +}else{ 
 +  cin >> str; 
 +  cout << " Wpisales slowo " << str << endl; 
 +
 +</​copy>​ 
 + 
 + 
 + 
 + 
 +==istream::​istream & read (char *gdzie, streamsize n)== 
 + 
 +Domeną zastosowań tej funkcji są binarne operacje wejścia - wyjścia. Wczytuje ona ze strumienia n znakow i umieszcza je do tablicy, której pierwszy element znajduje się pod adresem gdzie. Nie interesuje jej, czy wczytujemy dane binarne czy teksty. Niezależnie od tego, czy ze strumienia wyjmowane będą znaki alfanumeryczne,​ czy też znaki nowej linii, czy końca pliku - będą one umieszczane we wskazanym miejscu pamięci. Nadaje się np. do wczytywania danych binarnych z pliku dyskowego. 
 +W czasie przesyłania znaków ze strumienia może nastąpić bład - np. zażądaliśmy wczytania 50 znaków, a jest ich w strumieniu tylko 30. Zapali się wówczas flaga ios::​eofbit. Żeby sprawdzić, ile znakow zostało wczytanych, warto użyć funkcji istream::​gcount();​ 
 + 
 +<copy cpp> 
 +//​przyklad 
 +char napis[10];​ 
 + 
 +for(int i = 0; i <10; i++) napis[i] = '​0';​ //"​czyszczenie"​ tablicy 
 + 
 +cout << "​Zawartosc tablicy przed : " << napis << endl; 
 +cout << "​Wczytam tylko 4 bajty, napisz cos : "; 
 + 
 +cin.read(napis,​ 4); 
 + 
 +cout << "​Wczytane bajty : " << napis << endl; 
 + 
 +return 0; 
 +</​copy>​ 
 + 
 + 
 + 
 +==istream::​stremsize readsome(char* s, streamsize n)== 
 +Działa podobnie jak funkcja read(), z tymże jeżeli znaków w strumieniu jest mniej, niż zażądaliśmy,​ to wczytuje tylko tyle, ile ich jest, bez sygnalizacji błędu.\\ 
 +Zwraca ilość wczytanych znaków. Jeżeli bufor jest pusty, nic nie wczytuje i zwraca zero. 
 +  
 + 
 + 
 +==istream::​istream & putback(char c)== 
 +Pozwala na włożenie z powrotem do strumienia znaku, który został z niego wyjęty. 
 +Wartym odnotowania jest fakt, że standard nie definiuje tego, co by się stało gdybyśmy spróbowali wrzucić do strumienia inny znak, niż został przed chwilą z niego wyczytany. 
 + 
 +<code cpp> 
 +//​przyklad 
 +char c,z; 
 + 
 +cin >> c; 
 + 
 +cout << "​Przeczytany c=" << c << endl; 
 + 
 +cin.putback(c);​ 
 +cin >> z; 
 + 
 +cout << "​Przeczytany z=" << z << endl; 
 + 
 +return 0; 
 + 
 +</​code>​ 
 + 
 + 
 +==istream::​istream & unget()== 
 +Rożni się od funkcji istream::​putback() tym, że przyjmuje znaku, który trzeba włożyć z powrotem"​ do struminia - powinien on być automatycznie rozpoznany przez strumień, przez co jest bezpieczniejsza,​ niż istream::​putback();​ 
 + 
klasy_bazowe_dla_strumieni.txt · ostatnio zmienione: 2008/12/14 21:23 przez siemionides