C++ istream funkcije

C Istream Funkcije



Izraz 'stream' u C++ opisuje tijek znakova između programske niti i I/O. C++ stream klase potrebne su za radnje ulaza i izlaza na IO uređajima i datotekama. Ove su klase dizajnirane za upravljanje ulazom i izlazom programa i imaju posebnu funkcionalnost.

Hijerarhija klase toka

Klasa C++ sastoji se od metoda potrebnih za upravljanje podacima koje sadrži.

float, doubles i classes su tipovi podataka slični int. Jedinstvena varijabla s klasom kao tipom podataka naziva se C++ objekt. Unaprijed određeni posebni objekti 'cin' i 'cout' imaju različite klase kao svoje tipove podataka.







Podaci zapisani u 'cout' ili pročitani iz 'cin' primjeri su protoka podataka u ili iz programa u C++. Trenutno razmatramo sljedeće četiri klase za ovu:



Stream to
Ovaj ulazni tok može služiti bilo kojoj svrsi. Ilustracija istreama je cin.



Ostream
To je izlazni tok s nekoliko namjena. Ostreams dolaze u oblicima cout i cin.





Ako potok
To je tok ulaznih datoteka.

Potoka
To je tok izlaznih datoteka. Nasljeđivanje je pojam koji se jako koristi u objektno orijentiranom programiranju, kao što je C++, gdje neke klase preuzimaju karakteristike drugih klasa koje su već stvorene. Klase predaka tada postaju specijalizacije za sebe kroz uključivanje novih značajki.



Ako strujni razred
Ifstream se može tretirati na isti način kao i istream, što on i jest.

Potočne klase
Na isti način na koji funkcionira ifstreams, ali s izlazom umjesto ulaza, ofstream je tok izlazne datoteke. Ofstream se koristi na isti način kao i cout nakon što se konstruira, otvori i provjeri da nema pogrešaka.

Ios klasa
Iz ove klase potječu sve klase toka. Ulazni i izlazni tokovi su dvije različite vrste.

Definira dijelove toka koji su neovisni o ulaznom ili izlaznom statusu toka u ios bazi.

Za razliku od članova koji se raspravljaju u ios bazi, u ovom dijelu su opisani članovi koji ovise o parametrima predloška.

Stream (unos)
Zbog složenosti iostream biblioteke, nećemo je moći u potpunosti pokriti u ovim lekcijama. Ipak, istaknut ćemo funkcije koje se najviše koriste. U ovom odjeljku pogledat ćemo ulaznu klasu iz raznih kutova (istream).

Naučili smo da će se operator ekstrakcije (>>) koristiti za prikupljanje podataka iz ulaznog toka.

POTOK

U programskom jeziku C++, ulaznim tokom upravlja klasa istream. Unos se čita i razumije kao niz znakova pomoću ovih objekata ulaznog toka. Unosom upravlja cin.

Razredi članova

istream::sentry
Klasa koja izvršava mnoge zadatke i svaki put se izvodi procedura unosa. Njegov destruktor nije dužan izvršiti nikakve akcije. Međutim, implementacije mogu izvršiti dodatne zadatke pokretanja ili čišćenja u toku koji dijele sve ulazne operacije korištenjem stvaranja i uništavanja stražarskih objekata.

Funkcije

istream::gcount
Daje broj znakova koji je dobiven iz posljednje neformatirane radnje unosa objekta. Neformatirane procedure unosa — get, getline, ignore, peek, read, read some, putback i unget — mijenjaju vrijednost koju vraća ova funkcija. Međutim, imajte na umu da pozivanje peeks, putback ili unget ne izdvaja nikakve znakove. Kao rezultat toga, brojač će uvijek vraćati 0.

istream::get
Jedan znak izbacuje jedan znak iz toka. Znak se postavlja kao vrijednost argumenta ili se vraća (prvi potpis) (drugi potpis).

C niz: Ako je znak za razdvajanje prisutan, on se ne uklanja iz ulazne sekvence nego se zadržava kao sljedeći znak koji se dohvaća iz toka ako je prisutan.

istream::getline
Uklanja znakove iz toka kao neformatirani unos i sprema ih kao c-niz u varijabli 's' sve dok izdvojeni znak ne postane znak za razgraničenje ili dok se 'n' znakova ne zapiše u 's'. Osim toga, metoda će prestati izdvajati znakove ako dođe do kraja datoteke.

Interno, funkcija stvara objekt prije pristupa ulaznom nizu. Na kraju, ubija objekt prije povratka, izvlačeći znakove iz pridruženog objekta međuspremnika toka (pod pretpostavkom da je sve u redu) kao da izvršava jednu od svojih metoda članica, sbumpc ili sgetc.

istream::ignore
Znakovi se uzimaju iz ulazne sekvence i odbacuju jedan po jedan sve dok se ne izbaci 'n' znakova ili se jedan ne uspoređuje s razdjelnikom. Osim toga, ako se dosegne kraj datoteke, funkcija zaustavlja izdvajanje znakova. Funkcija postavlja oznaku 'eofbit' ako prerano dostigne ovu točku (prije izdvajanja n znakova ili otkrivanja delima).

Prije pristupa ulaznoj sekvenci, funkcija interno konstruira stražarski objekt (s noskipws će biti istinito). Naposljetku, ubija stražarski objekt prije povratka, izdvajajući znakove iz pridruženog objekta međuspremnika toka (pod pretpostavkom da je sve u redu) kao da izvršava jednu od svojih metoda članica: sbumpc ili sgetc.

istream::operator>>
Operator ekstrakcije (>>) primjenjuje ovaj operator na ulazni tok. Ima previše članova kao funkcija.

Aritmetička vrsta

Znakovi se izvlače iz toka i analiziraju sekvencijalno kako bi predstavili vrijednost pravog tipa, koja se zatim sprema kao vrijednost 'val'. Prije pristupa ulaznoj sekvenci, funkcija interno konstruira stražarski objekt (noskipws će biti false). Ako je sve u redu, tada se pokreće num get::get kako bi se dovršili procesi ekstrakcije i parsiranja dok se mijenjaju interne oznake stanja toka. Stražarski objekt je konačno uništen prije nego što ode.

Funkcija interno generira stražarski objekt prije čitanja ulazne sekvence, smatra se izvođenjem formatiranog unosa. Naposljetku, ubija stražarski objekt prije povratka, izvlačeći znakove iz pridruženog objekta međuspremnika toka (pod pretpostavkom da je sve u redu) kao da izvršava jednu od svojih metoda članica, sbumpc ili sgetc.

Manipulatori

Pf (*ovo) se zove, gdje bi pf mogao biti manipulator. Manipulatori su rutine stvorene posebno za pozivanje kada se ovaj operator pozove. Ovaj postupak ne utječe na ulazni niz i ne izdvajaju se znakovi.

istream::vratiti
Vraćeni znak pokušava pomaknuti kursor za jedan znak prema dolje u nizu tako da posljednji znak dohvaćen iz niza može ponovno biti ekstrahiran operacijama unosa.

Prije pristupa ulaznoj sekvenci, funkcija interno konstruira stražarski objekt. Zatim poziva sputbackc(c) na pridruženom objektu međuspremnika toka (ako je dobar). Stražarski objekt je konačno uništen prije nego što ode.

istream::read
Pročitajte blok podataka:

Znakovi 'n' uzimaju se iz toka i zatim se pohranjuju u polje na koje pokazuje 's'. Ova funkcija samo replicira blok podataka bez provjere sadržaja podataka ili dodavanja nultog znaka na kraju.

Unutar funkcije, prvo se kreira stražarski objekt prije nego se pristupi ulaznoj sekvenci. Naposljetku, ubija stražarski objekt prije povratka, izdvajajući znakove iz pridruženog objekta međuspremnika toka (pod pretpostavkom da je sve u redu) kao da izvršava jednu od svojih metoda članica: sbumpc ili sgetc.

Pozivanje broja članova vratit će ukupan broj znakova koje je ova funkcija pravilno pročitala i pohranila.

istream::readsome
Ova funkcija ovisi o unutarnjem radu specifičnog objekta međuspremnika toka povezanog s tokom, čije je ponašanje u velikoj mjeri definirano implementacijom za standardne klase.

Unutar funkcije, prvo se kreira stražarski objekt prije nego se pristupi ulaznoj sekvenci. Zatim (ako je uspješan), poziva funkciju člana u dostupnosti objekta međuspremnika toka kako bi odredio koliko je znakova sada dostupno prije pozivanja 'sbumpc' za izdvajanje do tog broja znakova (ili sgetc). Stražarski objekt je konačno uništen prije nego što ode.

istream::seekg
Položaj u ulaznom retku određuje gdje će sljedeći znak biti izvučen iz ulaznog toka. Prije čitanja ulazne sekvence, funkcija interno konstruira stražarski objekt. Zatim (ako je u redu), upućuje jedan od dva poziva odgovarajućem objektu međuspremnika toka: pubseekpos (1) ili pubseekoff (2), (ako postoji). Konačno, briše stražarski predmet i odlazi.

istream::sync
Poravnajte ulazni međuspremnik:

Sinkronizira kontroliranu ulaznu sekvencu povezanog međuspremnika toka. Specifična implementacija objekta međuspremnika toka povezanog s tokom određuje specifičnosti operacije.

istream::tellg
Dobijte poziciju ulazne sekvence:

Daje poziciju trenutnog lika u ulaznom toku. Funkcija tada vraća -1. Ako član ne uspije, vraća se true.

Vraća rdbuf()->pubseekoff ako nije (0,cur,in). Stražarski objekt je konačno uništen prije nego što ode.

istream::unget
Ukloni znak:

Pokušava pomaknuti pokazivač prema dolje za jedan znak u nizu tako da se posljednji znak dohvaćen iz niza može ponovo izdvojiti operacijama unosa.

Nečlan

operator>> (istream)
Operator ekstrakcije (>>) pruža formatirani unos ovom radnjom kada se primijeni na ulazni tok.

Jedan znak: Niz znakova uzima sljedeći znak iz sebe i pohranjuje ga kao vrijednost 'c'. Proces izvlačenja znakova iz is i njihovog pohranjivanja u s, kao c-string, zaustavlja se (ako širina nije nula) kada se naiđe na znak razmaka ili su ekstrahirani znakovi (širina ()-1).

Ekstrakcija rvalue: omogućuje ekstrakciju iz rvalue istream objekata, što ima isti rezultat kao ekstrakcija iz lvalues: Poziva is>>Val.

Primjer 1

U ovom bismo slučaju ispitali kako možemo dobiti bilo koju vrijednost od korisnika i zatim je prikazati kao rezultat na zaslonu.

#include
korištenjem imenski prostor std ;
int glavni ( )
{
int Ne ;
cout << 'Molimo unesite broj' ;
jelo >> Ne ;
cout << 'Unesena vrijednost je: ' << Ne << ' \n ' ;
}

Uključili bismo datoteku zaglavlja . Zatim ćemo koristiti imenski prostor 'std' u standardnom imenskom prostoru. Funkciju bismo nazvali main(). Varijabla pod nazivom 'no' bit će deklarirana unutar ove metode. Za ovu varijablu predstavljen je tip podataka 'int'. Izraz 'int' je skraćenica za cijeli broj. Nakon toga se koristi naredba 'cout'. Ova naredba ispisuje redak.

Korisnik će unijeti bilo koju slučajnu vrijednost nakon što se ovaj tekst prikaže na ekranu. Tada bi se upotrijebila izjava 'cin'. Ova naredba zahtijeva od korisnika da navede vrijednost. Korisnikov uneseni broj bi se spremio u varijablu. Vrijednost koju je dao korisnik bila bi prikazana na ekranu pomoću naredbe 'cout'.

Primjer 2

U ovom slučaju, vidjeli bismo kako dobivamo bilo koje ime od korisnika i zatim ga prikazujemo na zaslonu kao rezultat.

#include
korištenjem imenski prostor std ;

int glavni ( )

{

char Ime [ 125 ] ;
cout << 'Unesite svoje ime' << endl ;


jelo >> ws ;

jelo . getline ( Ime, 125 ) ;

cout << Ime << endl ;

povratak 0 ;

}

Uključili bismo datoteku zaglavlja . Zatim ćemo upotrijebiti standardni imenski prostor kao 'std'. Pozvali bismo funkciju main(). Unutar ove metode ćemo deklarirati varijablu. Ova varijabla sadrži tip podataka 'char'. Zatim se koristi naredba 'cout'. Ova naredba prikazuje tekst 'Unesite svoje ime' na ekranu. Nakon prikaza ovog teksta na ekranu, korisnik bi upisao bilo koje ime. Zatim bismo upotrijebili naredbu 'cin'.

Ova naredba preuzima vrijednost od korisnika. Navedeno ime bilo bi pohranjeno u varijabli 'ws'. Ovdje bismo još jednom upotrijebili naredbu 'cin'. Unutar ove naredbe primjenjuje se funkcija getline(). Ova funkcija sadrži parametar koji uključuje ime koje je unio korisnik i duljinu imena. Naredba 'cout' koristit će se za prikaz imena koje je dao korisnik. Za prekid koda koristit će se naredba 'return 0'.

Zaključak

Prvo smo razgovarali o tome što su C++ istream funkcije. Zatim promatramo nekoliko spomenutih funkcija i važnih definicija. U ovom smo članku pokrenuli različite kodove koji sadrže razne istream funkcije. U prvom kodu uzimamo bilo koji broj od korisnika i prikazujemo taj broj na ekranu. U drugom je korisnik upisao ime i ispisao ga na ekranu.