C++ istream funkcijos

C Istream Funkcijos



Terminas „srautas“ C++ kalba apibūdina simbolių srautą tarp programos gijos ir i/o. C++ srauto klasės reikalingos norint įvesti ir išvesti veiksmus IO įrenginiuose ir failuose. Šios klasės skirtos valdyti programos įvestį ir išvestį ir turi tam tikrų funkcijų.

Srauto klasės hierarchija

C++ klasę sudaro metodai, reikalingi joje esantiems duomenims valdyti ir valdyti.

float, doubles ir classes yra duomenų tipai, panašūs į int. Unikalus kintamasis, kurio duomenų tipas yra klasė, vadinamas C++ objektu. Iš anksto nustatyti specialieji objektai „cin“ ir „cout“ turi įvairias klases kaip duomenų tipus.







Duomenys, įrašyti į „cout“ arba nuskaityti iš „cin“, yra duomenų srautų į C++ programas arba iš jų pavyzdžiai. Šiuo metu mes svarstome šias keturias klases:



Perduokite jį srautu
Šis įvesties srautas gali būti naudojamas bet kokiam tikslui. Istream iliustracija yra cin.



Ostream
Tai išvesties srautas, turintis keletą naudojimo būdų. Ostreams būna cout ir cin formų.





Jei srautas
Tai įvesties failų srautas.

Iš srauto
Tai išvesties failų srautas. Paveldėjimas yra sąvoka, kuri plačiai naudojama objektiniame programavime, pavyzdžiui, C++, kur kai kurios klasės įgauna kitų jau sukurtų klasių charakteristikas. Tada protėvių klasės tampa savomis specializacijomis, įtraukdamos naujų savybių.



Jei srauto klasė
Ifstream gali būti traktuojamas taip pat, kaip ir istream, kas tai ir yra.

Iš srauto klasės
Lygiai taip pat, kaip veikia ifstreams, bet naudojant išvestį, o ne įvestį, srautas yra išvesties failo srautas. Srautas naudojamas taip pat, kaip ir cout, sukūrus, atidarius ir patikrinus, ar nėra klaidų.

Ios klasė
Iš šios klasės kilo visos srauto klasės. Įvesties ir išvesties srautai yra du skirtingi tipai.

Jis apibrėžia srauto dalis, kurios nepriklauso nuo srauto įvesties ar išvesties būsenos „iOS“ bazėje.

Priešingai nei ios bazėje aptariami nariai, šioje dalyje aprašomi nariai, kurie priklauso nuo šablono parametrų.

Srautas (įvestis)
Dėl „iostream“ bibliotekos sudėtingumo šiose pamokose negalėsime jos visiškai aprėpti. Tačiau pabrėšime dažniausiai naudojamas funkcijas. Šiame skyriuje pažvelgsime į įvesties klasę įvairiais kampais (istream).

Sužinojome, kad ištraukimo operatorius (>>) bus naudojamas duomenims iš įvesties srauto gauti.

SRAUTAS

C++ programavimo kalba įvesties srautą tvarko istream klasė. Įvestis skaitoma ir suprantama kaip simbolių serija naudojant šiuos įvesties srauto objektus. Įvestį tvarko cin.

Narių klasės

istream::sentry
Klasė, kurioje atliekama daug užduočių ir kiekvieną kartą atliekama įvesties procedūra. Jo naikintojas neprivalo atlikti jokių veiksmų. Tačiau diegimai gali atlikti papildomas paleisties arba valymo užduotis sraute, kurį bendrina visos įvesties operacijos, naudojant stebėjimo objektų kūrimą ir sunaikinimą.

Funkcijos

istream::gcount
Pateikiamas simbolių skaičius, gautas iš paskutinio nesuformatuoto objekto įvesties veiksmo. Neformatuotos įvesties procedūros – gauti, gauti eilutę, ignoruoti, žvilgtelėti, skaityti, šiek tiek skaityti, atidėti ir panaikinti – pakeičia šios funkcijos grąžintą reikšmę. Tačiau atminkite, kad skambinant peeks, putback arba unget simboliai neišskiriami. Dėl to skaičius visada grąžins 0.

istream::get
Vienintelis simbolis ištraukia vieną simbolį iš srauto. Simbolis nustatomas kaip argumento reikšmė arba grąžinamas (pirmasis parašas) (antrasis parašas).

C eilutė: jei yra skiriamojo simbolio, jis nepašalinamas iš įvesties sekos, o išlaikomas kaip kitas simbolis, kurį reikia gauti iš srauto, jei jis yra.

istream::getline
Pašalina simbolius iš srauto kaip neformatuotą įvestį ir išsaugo juos kaip c eilutę kintamajame „s“, kol išskirtas simbolis tampa skiriamuoju simboliu arba „n“ simboliai bus įrašyti į „s“. Be to, metodas nustos išgauti simbolius, jei pasieks failo pabaigą.

Viduje funkcija sukuria objektą prieš pasiekiant įvesties seką. Galiausiai jis užmuša objektą prieš grįždamas, ištraukdamas simbolius iš susieto srauto buferio objekto (darant prielaidą, kad viskas tvarkoje), tarsi vykdytų vieną iš jo narių metodų, sbumpc arba sgetc.

istream:: ignore
Simboliai paimami iš įvesties sekos ir atmetami po vieną, kol išimami „n“ simboliai arba jų skaičius lygus skyreliui. Be to, jei pasiekiama failo pabaiga, funkcija sustabdo simbolių ištraukimą. Funkcija nustato „eofbit“ vėliavėlę, jei ji pasiekia šį tašką per anksti (prieš ištraukiant n simbolių arba atrandant delim).

Prieš pasiekiant įvesties seką, funkcija viduje sukonstruoja stebėjimo objektą (su noskipws bus tiesa). Galiausiai, prieš grįždamas jis nužudo sargybinį objektą, ištraukdamas simbolius iš susieto srauto buferio objekto (darant prielaidą, kad viskas tvarkoje), tarsi vykdytų vieną iš savo narių metodų: sbumpc arba sgetc.

istream::operatorius>>
Ištraukimo operatorius (>>) taiko šį operatorių įvesties srautui. Jame yra per daug narių kaip funkcija.

Aritmetinis tipas

Simboliai išimami iš srauto ir nuosekliai analizuojami, kad būtų rodoma tinkamo tipo reikšmė, kuri vėliau išsaugoma kaip „val“ reikšmė. Prieš pasiekiant įvesties seką, funkcija viduje sukonstruoja stebėjimo objektą (noskipws bus klaidingas). Jei viskas gerai, ji paleidžia num get::get, kad užbaigtų išgavimo ir analizavimo procesus, keičiant vidines srauto būsenos vėliavėles. Sargybinis objektas galiausiai sunaikinamas prieš jam išvykstant.

Funkcija viduje generuoja stebėjimo objektą prieš nuskaitant įvesties seką, ji laikoma atliekančia suformatuotą įvestį. Galiausiai, prieš grįždamas jis nužudo sargybinį objektą, ištraukdamas simbolius iš susieto srauto buferio objekto (darant prielaidą, kad viskas tvarkoje), tarsi vykdytų vieną iš jo narių metodų, sbumpc arba sgetc.

Manipuliatoriai

Pf (*this) vadinamas, kur pf gali būti manipuliatorius. Manipuliatoriai yra įprasta tvarka, sukurta specialiai iškviesti, kai iškviečiamas šis operatorius. Ši procedūra neturi įtakos įvesties sekai ir nėra išgaunami jokie simboliai.

istream::putback
Atkurtas simbolis bando perkelti žymeklį vienu simboliu žemyn sraute, kad paskutinį iš srauto gautą simbolį būtų galima vėl išgauti atliekant įvesties operacijas.

Prieš pasiekiant įvesties seką, funkcija viduje sukonstruoja stebėjimo objektą. Tada jis iškviečia sputbackc(c) su juo susijusiame srauto buferio objekte (jei geras). Sargybinis objektas galiausiai sunaikinamas prieš jam išvykstant.

istream::read
Skaityti duomenų bloką:

„n“ simboliai paimami iš srauto ir išsaugomi masyve, į kurį nurodo „s“. Ši funkcija tik atkartoja duomenų bloką, netikrindama duomenų turinio arba nepridedant nulinio simbolio pabaigoje.

Funkcijoje prieš pasiekiant įvesties seką pirmiausia sukuriamas stebėjimo objektas. Galiausiai, prieš grįždamas jis nužudo sargybinį objektą, ištraukdamas simbolius iš susieto srauto buferio objekto (darant prielaidą, kad viskas tvarkoje), tarsi vykdytų vieną iš savo narių metodų: sbumpc arba sgetc.

Skambinančių narių skaičius pateiks bendrą simbolių skaičių, kurį ši funkcija tinkamai perskaitė ir išsaugojo.

istream::readsome
Ši funkcija priklauso nuo konkretaus srauto buferio objekto, susieto su srautu, vidinio veikimo, kurio elgsena iš esmės priklauso nuo standartinių klasių diegimo.

Funkcijoje prieš pasiekiant įvesties seką pirmiausia sukuriamas stebėjimo objektas. Tada (jei pavyksta), ji iškviečia nario funkciją srauto buferio objekte, kad nustatytų, kiek simbolių dabar yra, prieš iškviečiant „sbumpc“, kad būtų galima išgauti iki tokio simbolių skaičiaus (arba sgetc). Sargybinis objektas galiausiai sunaikinamas prieš jam išvykstant.

istream::seekg
Padėtis įvesties eilutėje nustato, kur iš įvesties srauto bus ištrauktas kitas simbolis. Prieš nuskaitant įvesties seką, funkcija viduje sukuria stebėjimo objektą. Tada (jei gerai), jis atlieka vieną iš dviejų iškvietimų į atitinkamą srauto buferio objektą: pubseekpos (1) arba pubseekoff (2), (jei yra). Galiausiai jis sunaikina sargybinį ir išvyksta.

istream::sync
Sulygiuokite įvesties buferį:

Sinchronizuojama susieto srauto buferio valdoma įvesties seka. Konkretus srauto buferio objekto, prijungto prie srauto, įgyvendinimas lemia operacijos specifiką.

istream::tellg
Gaukite įvesties sekos padėtį:

Jis nurodo dabartinę veikėjo vietą įvesties sraute. Tada funkcija grąžina -1. Jei narys nepavyksta, jis grąžina teisingą.

Jis grąžina rdbuf()->pubseekoff, jei ne (0,cur,in). Sargybinis objektas galiausiai sunaikinamas prieš jam išvykstant.

istream::unget
Pašalinti simbolį:

Bando perkelti žymeklį žemyn vienu simboliu sraute, kad paskutinį iš srauto gautą simbolį vėl būtų galima išgauti atliekant įvesties operacijas.

Ne narys

operatorius >> (istream)
Ištraukimo operatorius (>>) pateikia suformatuotą įvestį atlikdamas šį veiksmą, kai taikomas įvesties srautui.

Vienas simbolis: simbolių seka paima kitą simbolį ir išsaugo jį kaip „c“ reikšmę. Simbolių ištraukimas iš is ir jų saugojimas s, kaip c eilutė, sustoja (jei plotis nėra nulis), kai aptinkamas tarpas arba (plotis ()-1) simboliai yra išgauti.

Rvalue išskyrimas: leidžia išgauti iš rvalue istream objektus, kurių rezultatas toks pat kaip ir išskyrimas iš lvalue: Iškviečiamas is>>Val.

1 pavyzdys

Tokiu atveju išnagrinėsime, kaip galime gauti kokią nors vertę iš vartotojo, ir tada parodysime ją kaip rezultatą ekrane.

#include
naudojant vardų erdvė std ;
tarpt pagrindinis ( )
{
tarpt Nr ;
cout << 'Prašome įvesti numerį' ;
valgymas >> Nr ;
cout << 'Įvesta vertė yra: ' << Nr << \n ;
}

Įtrauktume antraštės failą. Tada standartinėje vardų erdvėje naudosime vardų sritį „std“. Iškviestume funkciją main (). Pagal šį metodą bus deklaruojamas kintamasis pavadinimu „ne“. Šiam kintamajam pateikiamas „int“ duomenų tipas. Terminas „int“ yra sveikojo skaičiaus santrumpa. Vėliau naudojamas teiginys „cout“. Ši komanda išspausdina eilutę.

Vartotojas įves bet kokią atsitiktinę reikšmę, kai šis tekstas bus parodytas ekrane. Tada būtų buvęs panaudotas „cin“ teiginys. Ši komanda reikalauja, kad vartotojas nurodytų reikšmę. Vartotojo įvestas numeris būtų išsaugotas kintamajame. Vartotojo pateikta reikšmė bus rodoma ekrane naudojant komandą „cout“.

2 pavyzdys

Tokiu atveju pamatytume, kaip iš vartotojo gauname bet kokį vardą ir kaip rezultatą parodysime ekrane.

#include
naudojant vardų erdvė std ;

tarpt pagrindinis ( )

{

char vardas [ 125 ] ;
cout << 'Įvesk savo vardą' << endl ;


valgymas >> ws ;

valgymas . getline ( vardas, 125 ) ;

cout << vardas << endl ;

grąžinti 0 ;

}

Įtrauktume antraštės failą . Tada standartinę vardų erdvę naudosime kaip „std“. Mes iškviesime main() funkciją. Taikydami šį metodą deklaruosime kintamąjį. Šis kintamasis turi duomenų tipą „char“. Tada naudojamas teiginys „cout“. Ši komanda ekrane rodo tekstą „Įveskite savo vardą“. Parodęs šį tekstą ekrane, vartotojas įves bet kokį vardą. Tada naudotume teiginį „cin“.

Ši komanda paima reikšmę iš vartotojo. Pateiktas pavadinimas būtų saugomas kintamajame „ws“. Čia dar kartą panaudotume komandą „cin“. Šioje komandoje taikoma getline() funkcija. Šioje funkcijoje yra parametras, apimantis vartotojo įvestą pavadinimą ir vardo ilgį. Komanda „cout“ bus naudojama vartotojo pateiktam vardui parodyti. Norėdami nutraukti kodą, bus naudojama komanda „grįžti 0“.

Išvada

Pirma, mes kalbėjome apie tai, kas yra C++ istream funkcijos. Tada stebime keletą paminėtų funkcijų ir svarbių apibrėžimų. Šiame straipsnyje paleidome skirtingus kodus, kuriuose yra įvairių „istream“ funkcijų. Pirmajame kode mes paimame bet kokį numerį iš vartotojo ir rodome tą skaičių ekrane. Antrajame vartotojas įvedė vardą ir išspausdino jį ekrane.