Funkcije C++ istream

Funkcije C Istream



Izraz 'tok' v C++ opisuje pretok znakov med programsko nitjo in v/i. Razredi toka C++ so potrebni za vhodna in izhodna dejanja na IO napravah in datotekah. Ti razredi so zasnovani za upravljanje vnosa in izhoda programa in imajo posebno funkcionalnost.

Hierarhija razreda toka

Razred C++ je sestavljen iz metod, potrebnih za upravljanje in upravljanje podatkov, ki jih vsebuje.

float, doubles in classes so podatkovni tipi, podobni int. Edinstvena spremenljivka z razredom kot tipom podatkov se imenuje objekt C++. Vnaprej določena posebna objekta 'cin' in 'cout' imata različne razrede kot tipe podatkov.







Podatki, zapisani v 'cout' ali prebrani iz 'cin', so primeri tokov podatkov v ali iz programov v C++. Trenutno razmišljamo o naslednjih štirih razredih za to:



Pretočno predvajajte
Ta vhodni tok lahko služi kateremu koli namenu. Ilustracija istreama je cin.



Ostream
Je izhodni tok z več uporabami. Ostreami so v oblikah cout in cin.





Če tok
Je tok vhodnih datotek.

Potoka
Je tok izhodnih datotek. Dedovanje je pojem, ki se pogosto uporablja v objektno usmerjenem programiranju, na primer v C++, kjer nekateri razredi prevzamejo značilnosti drugih razredov, ki so že bili ustvarjeni. Razredi prednikov nato z vključitvijo novih funkcij postanejo specializacije sami zase.



Če pretočni razred
Ifstream je mogoče obravnavati na enak način kot istream, kar tudi je.

Iz tokovnega razreda
Na enak način kot ifstreams deluje, vendar z izhodom namesto vhoda, je ofstream tok izhodne datoteke. Ofstream se uporablja na enak način kot cout, potem ko je izdelan, odprt in preverjen, da nima napak.

Ios razred
Iz tega razreda so izšli vsi tokovni razredi. Vhodni in izhodni tokovi sta dve različni vrsti.

Določa dele toka, ki so neodvisni od vhodnega ali izhodnega statusa toka v bazi ios.

Za razliko od članov, ki so obravnavani v bazi ios, so v tem delu opisani člani, ki so odvisni od parametrov predloge.

Tok (vnos)
Zaradi zapletenosti knjižnice iostream je v teh lekcijah ne bomo mogli v celoti obravnavati. Vendar bomo izpostavili funkcije, ki se največ uporabljajo. V tem razdelku si bomo vhodni razred ogledali z različnih zornih kotov (istream).

Izvedeli smo, da bo za pridobivanje podatkov iz vhodnega toka uporabljen operator ekstrakcije (>>).

PRETOK

V programskem jeziku C++ vhodni tok obravnava razred istream. Vnos se prebere in razume kot niz znakov z uporabo teh predmetov vhodnega toka. Vnos obravnava cin.

Članski razredi

istream::sentry
Razred, ki izvaja številne naloge in vsakič se izvede postopek vnosa. Njegovemu destruktorju ni treba izvajati nobenih dejanj. Vendar lahko implementacije izvedejo dodatne naloge zagona ali čiščenja v toku, ki si ga delijo vse vhodne operacije z uporabo ustvarjanja in uničenja objektov stražarja.

Funkcije

istream::gcount
Poda število znakov, ki je bilo pridobljeno iz zadnjega neoblikovanega vnosnega dejanja predmeta. Neformatirani vnosni postopki — get, getline, ignore, peek, read, read some, putback in unget — spremenijo vrednost, ki jo vrne ta funkcija. Vendar ne pozabite, da klic peeks, putback ali unget ne izvleče nobenih znakov. Posledično bo štetje vedno vrnilo 0.

istream::get
En sam znak vzame en znak iz toka. Znak je nastavljen kot vrednost argumenta ali vrnjen (prvi podpis) (drugi podpis).

Niz C: Če je ločilni znak prisoten, se ne odstrani iz vhodnega zaporedja, temveč se ohrani kot naslednji znak, ki se pridobi iz toka, če je prisoten.

istream::getline
Odstrani znake iz toka kot neformatirani vnos in jih shrani kot c-niz v spremenljivki »s«, dokler ekstrahirani znak ne postane ločilni znak ali pa znaki »n« niso zapisani v »s«. Poleg tega bo metoda prenehala ekstrahirati znake, če doseže konec datoteke.

Notranje funkcija ustvari objekt pred dostopom do vhodnega zaporedja. Nazadnje ubije objekt, preden se vrne, in ekstrahira znake iz svojega povezanega predmeta medpomnilnika toka (ob predpostavki, da je vse v redu), kot da bi izvajal eno od svojih metod članov, sbumpc ali sgetc.

istream::ignore
Znaki se vzamejo iz vhodnega zaporedja in zavržejo enega za drugim, dokler ni odstranjenih »n« znakov ali pa eden primerja enak ločilu. Poleg tega, če je dosežen konec datoteke, funkcija ustavi ekstrakcijo znakov. Funkcija nastavi zastavico »eofbit«, če prezgodaj doseže to točko (preden ekstrahira n znakov ali odkrije delim).

Preden dostopi do vhodnega zaporedja, funkcija interno sestavi stražni objekt (z noskipws bo res). Nazadnje ubije stražarski objekt, preden se vrne, in ekstrahira znake iz svojega povezanega predmeta medpomnilnika toka (ob predpostavki, da je vse v redu), kot da bi izvajal eno od svojih metod članov: sbumpc ali sgetc.

istream::operator>>
Operator ekstrakcije (>>) uporabi ta operator za vhodni tok. Kot funkcija ima preveč članov.

Aritmetična vrsta

Znaki so vzeti iz toka in zaporedno razčlenjeni, da predstavljajo vrednost prave vrste, ki se nato shrani kot vrednost »val«. Preden dostopi do vhodnega zaporedja, funkcija interno sestavi stražni objekt (noskipws bo false). Če je vse dobro preverjeno, potem zažene num get::get za dokončanje postopkov ekstrakcije in razčlenjevanja, medtem ko spreminja notranje zastavice stanja toka. Predmet stražarja je dokončno uničen, preden odide.

Funkcija interno ustvari stražarski objekt, preden prebere vhodno zaporedje, nanj se gleda kot na izvajanje formatiranega vnosa. Nazadnje ubije stražarski objekt, preden se vrne, in ekstrahira znake iz svojega povezanega predmeta medpomnilnika toka (ob predpostavki, da je vse v redu), kot da bi izvajal eno od svojih metod članov, sbumpc ali sgetc.

Manipulatorji

Imenuje se pf (*this), kjer je pf lahko manipulator. Manipulatorji so rutine, ustvarjene posebej za klic, ko je ta operater priklican. Ta postopek ne vpliva na vnosno zaporedje in ne ekstrahira nobenih znakov.

istream::vrati
Obnovljeni znak poskuša premakniti kazalec za en znak navzdol v toku, tako da je zadnji znak, pridobljen iz toka, mogoče znova izvleči z vnosnimi operacijami.

Preden dostopi do vhodnega zaporedja, funkcija interno sestavi stražarski objekt. Nato pokliče sputbackc(c) na svojem povezanem objektu medpomnilnika toka (če je dober). Predmet stražarja je dokončno uničen, preden odide.

istream::read
Preberite podatkovni blok:

Znaki 'n' se vzamejo iz toka in se nato shranijo v matriko, na katero kaže 's'. Ta funkcija samo posnema blok podatkov, ne da bi pregledala vsebino podatkov ali dodala ničelni znak na koncu.

Znotraj funkcije se najprej ustvari stražarski objekt, preden se dostopa do vhodnega zaporedja. Nazadnje ubije stražarski objekt, preden se vrne, in ekstrahira znake iz svojega povezanega predmeta medpomnilnika toka (ob predpostavki, da je vse v redu), kot da bi izvajal eno od svojih metod članov: sbumpc ali sgetc.

Klicanje števila članov bo vrnilo skupno število znakov, ki jih je ta funkcija pravilno prebrala in shranila.

istream::readsome
Ta funkcija je odvisna od notranjega delovanja specifičnega objekta vmesnega pomnilnika toka, povezanega s tokom, katerega vedenje je v veliki meri definirano z implementacijo za standardne razrede.

Znotraj funkcije se najprej ustvari stražarski objekt, preden se dostopa do vhodnega zaporedja. Nato (če je uspešen) pokliče funkcijo člana v razpoložljivosti objekta medpomnilnika toka, da ugotovi, koliko znakov je zdaj na voljo, preden pokliče »sbumpc«, da ekstrahira do tega števila znakov (ali sgetc). Predmet stražarja je dokončno uničen, preden odide.

istream::seekg
Položaj v vhodni vrstici določa, kje bo naslednji znak potegnjen iz vhodnega toka. Pred branjem vhodnega zaporedja funkcija interno sestavi objekt stražar. Nato (če je v redu), izvede enega od dveh klicev ustreznega objekta medpomnilnika toka: pubseekpos (1) ali pubseekoff (2), (če obstaja). Na koncu izbriše stražarski predmet in odide.

istream::sync
Poravnajte vhodni medpomnilnik:

Sinhronizira nadzorovano vhodno zaporedje medpomnilnika povezanega toka. Posebna izvedba objekta medpomnilnika toka, povezanega s tokom, določa posebnosti operacije.

istream::tellg
Pridobite položaj vhodnega zaporedja:

Poda položaj trenutnega znaka v vhodnem toku. Funkcija nato vrne -1. Če član ne uspe, vrne true.

Vrne rdbuf()->pubseekoff, če ni (0,cur,in). Predmet stražarja je dokončno uničen, preden odide.

istream::unget
Odstrani znak:

Kazalec poskuša premakniti za en znak navzdol v toku, tako da je mogoče zadnji znak, pridobljen iz toka, znova izvleči z vnosnimi operacijami.

Nečlan

operater>> (istream)
Operator ekstrakcije (>>) s tem dejanjem zagotovi oblikovan vnos, ko se uporabi za vhodni tok.

En znak: Zaporedje znakov vzame naslednji znak iz sebe in ga shrani kot vrednost 'c'. Postopek ekstrahiranja znakov iz is in njihovega shranjevanja v s, kot c-niz, se ustavi (če širina ni nič), ko naletite na presledek ali so bili ekstrahirani (width ()-1) znaki.

Ekstrakcija rvalue: omogoča ekstrahiranje iz objektov istream rvalue, kar ima enak rezultat kot ekstrahiranje iz lvalues: kliče is>>Val.

Primer 1

V tem primeru bi preučili, kako lahko od uporabnika pridobimo kakršno koli vrednost in jo nato prikažemo kot rezultat na zaslonu.

#include
uporabo imenski prostor std ;
int glavni ( )
{
int št ;
cout << 'Prosimo, vnesite številko' ;
prehranjevanje >> št ;
cout << 'Vnesena vrednost je: ' << št << ' \n ' ;
}

Vključili bi datoteko glave . Nato bomo v standardnem imenskem prostoru uporabili imenski prostor 'std'. Funkcijo bi imenovali main(). V tej metodi bo deklarirana spremenljivka z imenom 'no'. Za to spremenljivko je predstavljen podatkovni tip 'int'. Izraz 'int' je okrajšava za celo število. Nato se uporabi stavek 'cout'. Ta ukaz natisne vrstico.

Uporabnik bo vnesel katero koli naključno vrednost, potem ko je to besedilo prikazano na zaslonu. Potem bi bila uporabljena izjava 'cin'. Ta ukaz zahteva, da uporabnik navede vrednost. Uporabnikova vnesena številka bi se shranila v spremenljivko. Vrednost, ki jo poda uporabnik, bi bila prikazana na zaslonu z ukazom 'cout'.

Primer 2

V tem primeru bi videli, kako dobimo poljubno ime od uporabnika in ga nato prikažemo na zaslonu kot rezultat.

#include
uporabo imenski prostor std ;

int glavni ( )

{

char ime [ 125 ] ;
cout << 'Vnesite svoje ime' << konec ;


prehranjevanje >> ws ;

prehranjevanje . getline ( ime, 125 ) ;

cout << ime << konec ;

vrnitev 0 ;

}

Vključili bi datoteko glave . Nato bomo uporabili standardni imenski prostor kot 'std'. Priklicali bi funkcijo main(). Znotraj te metode bomo deklarirali spremenljivko. Ta spremenljivka vsebuje podatkovni tip 'char'. Nato se uporabi izjava 'cout'. Ta ukaz na zaslonu prikaže besedilo »Vnesite svoje ime«. Po prikazu tega besedila na zaslonu bi uporabnik vnesel poljubno ime. Nato bi uporabili izjavo 'cin'.

Ta ukaz vzame vrednost od uporabnika. Podano ime bi bilo shranjeno v spremenljivki 'ws'. Tukaj bi še enkrat uporabili ukaz 'cin'. Znotraj tega ukaza se uporablja funkcija getline(). Ta funkcija vsebuje parameter, ki vključuje ime, ki ga vnese uporabnik, in dolžino imena. Ukaz 'cout' bo uporabljen za prikaz imena, ki ga je vnesel uporabnik. Za prekinitev kode bo uporabljen ukaz 'return 0'.

Zaključek

Najprej smo govorili o tem, kaj so funkcije C++ istream. Nato opazimo več omenjenih funkcij in pomembnih definicij. V tem članku smo izvajali različne kode, ki vsebujejo različne funkcije istream. V prvi kodi vzamemo poljubno številko od uporabnika in to številko prikažemo na zaslonu. Pri drugem je uporabnik vnesel ime in ga natisnil na zaslon.