C++ istreami funktsioonid

C Istreami Funktsioonid



Mõiste 'voog' C++ keeles kirjeldab märkide voogu programmilõime ja i/o vahel. C++ vooklassid on vajalikud toimingute sisestamiseks ja väljundiks IO-seadmetes ja -failides. Need klassid on loodud programmi sisendi ja väljundi haldamiseks ning neil on eriline funktsionaalsus.

Voo klassi hierarhia

C++ klass koosneb meetoditest, mis on vajalikud selles sisalduvate andmete haldamiseks ja haldamiseks.

float, doubles ja klassid on int-ga sarnased andmetüübid. Unikaalset muutujat, mille andmetüübiks on klass, nimetatakse C++ objektiks. Eelnevalt määratud eriobjektidel 'cin' ja 'cout' on andmetüüpidena erinevad klassid.







Andmed, mis on kirjutatud 'cout' või loetud 'cin'ist, on näited andmevoogudest C++ programmidesse või programmidest välja. Praegu kaalume selle klassi jaoks järgmisi nelja klassi:



Voogesitage seda
See sisendvoog võib teenida mis tahes eesmärki. Istreami näide on cin.



Ostream
See on mitme kasutusega väljundvoog. Ostreamid esinevad cout ja cin kujul.





Kui voog
See on sisendfailide voog.

Ojast
See on väljundfailide voog. Pärand on mõiste, mida kasutatakse laialdaselt objektorienteeritud programmeerimises, näiteks C++-s, kus mõned klassid võtavad üle teiste juba loodud klasside omadused. Esivanemate klassid muutuvad seejärel uute funktsioonide kaasamise kaudu iseenda spetsialiseerumisaladeks.



Kui vooklass
Ifstreami saab käsitleda samal viisil kui istreami, mis see ka on.

Streamisklassist
Samamoodi nagu funktsioonid ifstreams, kuid sisendi asemel on väljund, on voog väljundfaili voog. Voovälist voogu kasutatakse samamoodi nagu cout pärast konstrueerimist, avamist ja vigadeta kontrollimist.

Ios klass
Sellest klassist põlvnesid kõik vooklassid. Sisend- ja väljundvood on kahte erinevat tüüpi.

See määratleb voo osad, mis ei sõltu voo sisendi või väljundi olekust iOS-i baasis.

Erinevalt ios-i baasis käsitletavatest liikmetest kirjeldatakse selles osas malli parameetritest sõltuvaid liikmeid.

Voog (sisend)
Iostreami raamatukogu keerukuse tõttu ei saa me nendes õppetundides seda täielikult käsitleda. Siiski tõstame esile funktsioonid, mida kasutatakse kõige rohkem. Selles jaotises vaatleme sisendklassi mitme nurga alt (istream).

Saime teada, et andmete hankimiseks sisendvoost kasutatakse ekstraheerimisoperaatorit (>>).

VOED

Programmeerimiskeeles C++ tegeleb sisendvooga istream klass. Sisend loetakse ja mõistetakse märkide seeriana, kasutades neid sisendvoo objekte. Sisendiga tegeleb cin.

Liikmeklassid

istream::sentry
Klass, mis täidab palju ülesandeid ja iga kord sooritatakse sisestusprotseduur. Selle hävitaja ei pea mingeid toiminguid tegema. Siiski võivad rakendused täita täiendavaid käivitus- või puhastusülesandeid voos, mida jagavad kõik sisendtoimingud, kasutades valveobjektide loomist ja hävitamist.

Funktsioonid

istream::gcount
Annab tähemärkide arvu, mis saadi objekti viimasest vormindamata sisendtoimingust. Vormindamata sisestusprotseduurid – hanki, getline, ignore, peek, read, read some, putback ja unget – muudavad selle funktsiooni tagastatavat väärtust. Kuid pidage meeles, et peeks, putback või unget kutsumine ei eralda ühtegi tähemärki. Selle tulemusena tagastab loendus alati 0.

istream::get
Üksik märk eemaldab voost ühe märgi. Märk määratakse argumendi väärtuseks või tagastatakse (esimene allkiri) (teine ​​allkiri).

C string: kui piiritlev märk on olemas, ei eemaldata seda sisendjadast, vaid säilitatakse järgmise märgina, mis tuleb voost alla laadida, kui see on olemas.

istream::getline
Eemaldab märgid voost vormindamata sisendina ja salvestab need c-stringina muutujas 's', kuni eraldatud märgist saab piiritlev märk või 'n' tähemärki on kirjutatud 's'. Lisaks lõpetab meetod märkide ekstraktimise, kui see jõuab faili lõppu.

Sisemiselt loob funktsioon objekti enne sisendjärjestusele juurde pääsemist. Lõpuks tapab see objekti enne naasmist, ekstraheerides sellega seotud voopuhvri objektist märgid (eeldusel, et kõik on korras), justkui käivitaks selle ühe liikmemeetodi, sbumpc või sgetc.

istream::ignoreerima
Tähemärgid võetakse sisendjärjestusest ja visatakse ükshaaval kõrvale, kuni on eemaldatud kas 'n' märki või võrrelduna ühte delimiga. Lisaks peatab funktsioon märkide ekstraheerimise, kui faili lõppu jõutakse. Funktsioon seab lipu 'eofbit', kui see jõuab sellesse punkti liiga vara (enne n märgi eraldamist või delimi avastamist).

Enne sisendjada juurde pääsemist konstrueerib funktsioon sisemiselt valveobjekti (noskipws on tõsi). Lõpuks tapab see enne tagasipöördumist valveobjekti, eraldades sellega seotud voopuhvri objektist märgid (eeldusel, et kõik on korras), justkui käivitades üht oma liikmemeetoditest: sbumpc või sgetc.

istream::operaator>>
Ekstraheerimise operaator (>>) rakendab seda operaatorit sisendvoo jaoks. Sellel on funktsioonina liiga palju liikmeid.

Aritmeetiline tüüp

Märgid võetakse voost välja ja sõelutakse järjestikku, et esindada õiget tüüpi väärtust, mis seejärel salvestatakse väärtusena „val”. Enne sisendjada juurde pääsemist konstrueerib funktsioon sisemiselt valveobjekti (noskipws on vale). Kui kõik õnnestub hästi, käivitab see ekstraktimise ja sõelumise lõpuleviimiseks num get::get, muutes samal ajal voo sisemisi olekulippe. Valveobjekt hävitatakse lõpuks enne lahkumist.

Funktsioon genereerib enne sisendjada lugemist sisemiselt valveobjekti, seda vaadeldakse kui vormindatud sisendit. Lõpuks tapab see enne tagasipöördumist valveobjekti, eraldades sellega seotud voopuhvri objektist märgid (eeldusel, et kõik on korras), justkui käivitades üht oma liikmemeetoditest, sbumpc või sgetc.

Manipulaatorid

Nimetatakse pf (*this), kus pf võib olla manipulaator. Manipulaatorid on rutiinid, mis on loodud spetsiaalselt selle operaatori väljakutsumiseks. See protseduur ei mõjuta sisestusjärjestust ja märke ei ekstraheerita.

istream::putback
Taastatud märk üritab kursorit voos ühe märgi võrra allapoole liigutada, et voost viimati otsitud tähemärki saaks uuesti sisestustoimingutega eraldada.

Enne sisendjada juurde pääsemist konstrueerib funktsioon sisemiselt valveobjekti. Seejärel kutsub see sellega seotud voopuhvri objektil välja sputbackc(c) (kui see on hea). Valveobjekt hävitatakse lõpuks enne lahkumist.

istream::read
Andmeploki lugemine:

'n' märgid võetakse voost ja salvestatakse seejärel massiivi, millele osutab 's'. See funktsioon lihtsalt kordab andmeplokki ilma andmete sisu kontrollimata või nullmärki lisamata.

Funktsiooni sees luuakse enne sisendjärjestusele juurdepääsu esmalt valveobjekt. Lõpuks tapab see enne tagasipöördumist valveobjekti, eraldades sellega seotud voopuhvri objektist märgid (eeldusel, et kõik on korras), justkui käivitades üht oma liikmemeetoditest: sbumpc või sgetc.

Helistavate liikmete arv tagastab selle funktsiooni poolt õigesti loetud ja salvestatud märkide koguarvu.

istream::readsome
See funktsioon sõltub konkreetse vooga lingitud voopuhvri objekti sisemisest tööst, mille käitumine on standardklasside puhul suuresti juurutatud.

Funktsiooni sees luuakse enne sisendjärjestusele juurdepääsu esmalt valveobjekt. Seejärel (kui see õnnestub) kutsub see välja voopuhvri objekti funktsiooni liikmefunktsiooni, et teha kindlaks, kui palju märke on nüüd saadaval, enne kui kutsutakse 'sbumpc' kuni selle arvu märkide eraldamiseks (või sgetc). Valveobjekt hävitatakse lõpuks enne lahkumist.

istream::seekg
Asend sisestusreal määrab, kuhu sisendvoost tõmmatakse järgmine märk. Enne sisendjada lugemist konstrueerib funktsioon sisemiselt valveobjekti. Seejärel (kui OK) teeb see ühe kahest kõnest vastavale voopuhvri objektile: pubseekpos (1) või pubseekoff (2), (kui on). Lõpuks kustutab see valveüksuse ja lahkub.

istream::sync
Joondage sisendpuhver:

Sünkroonib lingitud voopuhvri juhitud sisendjärjestuse. Vooga ühendatud voopuhvri objekti konkreetne teostus määrab toimingu eripära.

istream::tellg
Hankige sisestusjärjestuse asukoht:

See annab praeguse tegelase asukoha sisendvoos. Seejärel tagastab funktsioon -1. Kui liige ebaõnnestub, tagastab see tõene.

Tagastab rdbuf()->pubseekoff, kui mitte (0,cur,in). Valveobjekt hävitatakse lõpuks enne lahkumist.

istream::unget
Eemalda märk:

Püüab liigutada kursorit voos ühe tähemärgi võrra allapoole, et voost viimati otsitud tähemärki saaks taas sisestustoimingutega eraldada.

Mitte liige

operaator >> (istream)
Ekstraheerimise operaator (>>) annab selle toiminguga vormindatud sisendi, kui seda rakendatakse sisendvoogu.

Üks märk: märgijada võtab sellest välja järgmise märgi ja salvestab selle 'c' väärtusena. Märkide eraldamise protsess is-ist ja nende salvestamine s-i c-stringina peatub (kui laius ei ole null), kui ilmneb tühimärk või (laius ()-1) märgid on ekstraheeritud.

Rvalue ekstraheerimine: võimaldab istreami objektide väljavõtmist rvalue-st, millel on sama tulemus, mis lvalue-st eraldamisel: See kutsub välja is>>Val.

Näide 1

Sel juhul uuriksime, kuidas saaksime kasutajalt mis tahes väärtuse saada ja seejärel kuvame selle tulemusena ekraanil.

#include
kasutades nimeruum std ;
int peamine ( )
{
int Ei ;
cout << 'Palun sisestage number' ;
söömine >> Ei ;
cout << 'Sisestatud väärtus on: ' << Ei << ' \n ' ;
}

Lisaksime päisefaili . Järgmisena kasutame standardses nimeruumis nimeruumi 'std'. Kutsume funktsiooni main(). Selle meetodi raames deklareeritakse muutuja nimega 'ei'. Selle muutuja jaoks on esitatud andmetüüp 'int'. Mõiste 'int' on täisarvu lühend. Hiljem kasutatakse lauset 'cout'. See käsk prindib rea.

Kasutaja sisestab mis tahes juhusliku väärtuse pärast selle teksti kuvamist ekraanil. Siis oleks kasutatud lauset 'cin'. See käsk nõuab, et kasutaja näitaks väärtust. Kasutaja sisestatud number salvestatakse muutujasse. Kasutaja pakutav väärtus kuvatakse ekraanil käsu 'cout' abil.

Näide 2

Sel juhul näeksime, kuidas saame kasutajalt mis tahes nime ja näitame seda tulemusena ekraanil.

#include
kasutades nimeruum std ;

int peamine ( )

{

char nimi [ 125 ] ;
cout << 'Sisestage oma nimi' << endl ;


söömine >> ws ;

söömine . getline ( nimi, 125 ) ;

cout << nimi << endl ;

tagasi 0 ;

}

Lisaksime päisefaili . Järgmisena kasutame standardset nimeruumi kui 'std'. Me kutsuksime esile funktsiooni main(). Selle meetodi raames deklareerime muutuja. See muutuja sisaldab andmetüüpi 'char'. Seejärel kasutatakse lauset 'cout'. See käsk näitab ekraanil teksti 'Sisesta oma nimi'. Pärast selle teksti kuvamist ekraanil sisestab kasutaja mis tahes nime. Seejärel kasutaksime väljendit 'cin'.

See käsk võtab väärtuse kasutajalt. Esitatud nimi salvestatakse muutujasse 'ws'. Siin kasutaksime veel kord käsku 'cin'. Selle käsu sees rakendatakse funktsiooni getline(). See funktsioon sisaldab parameetrit, mis sisaldab kasutaja sisestatud nime ja nime pikkust. Käsku 'cout' kasutatakse kasutaja antud nime kuvamiseks. Koodi lõpetamiseks kasutatakse käsku 'tagasi 0'.

Järeldus

Esiteks rääkisime sellest, mis on C++ istream funktsioonid. Seejärel vaatleme mitmeid mainitud funktsioone ja olulisi määratlusi. Selles artiklis oleme käivitanud erinevaid koode, mis sisaldavad mitmesuguseid istreami funktsioone. Esimeses koodis võtame kasutajalt suvalise numbri ja kuvame selle numbri ekraanil. Teises sisestas kasutaja nime ja printis selle nime ekraanile.