C++ istream funkcijas

C Istream Funkcijas

Termins “straume” valodā C++ apraksta rakstzīmju plūsmu starp programmas pavedienu un i/o. C++ straumes klases ir nepieciešamas, lai ievadītu un izvadītu darbības IO ierīcēs un failos. Šīs klases ir paredzētas programmas ievades un izvades pārvaldībai, un tām ir īpaša funkcionalitāte.

Straumes klašu hierarhija

C++ klase sastāv no metodēm, kas nepieciešamas, lai pārvaldītu un pārvaldītu tajā ietvertos datus.

float, dubultnieki un klases ir datu tipi, kas līdzīgi int. Unikāls mainīgais, kura datu tips ir klase, tiek saukts par C++ objektu. Iepriekš norādītajiem īpašajiem objektiem “cin” un “cout” ir dažādas klases kā datu tipi.







Dati, kas rakstīti uz “cout” vai nolasīti no “cin”, ir piemēri datu plūsmām uz programmām vai no tām programmā C++. Pašlaik mēs apsveram šādas četras klases:



Straumējiet to
Šī ievades straume var kalpot jebkuram mērķim. Istream ilustrācija ir cin.



Ostream
Tā ir izvades plūsma ar vairākiem lietojumiem. Ostraumi ir cout un cin formās.





Ja straume
Tā ir ievades failu plūsma.

No straumes
Tā ir izvades failu plūsma. Mantojums ir jēdziens, kas tiek plaši izmantots objektorientētajā programmēšanā, piemēram, C++, kur dažas klases pārņem citu jau izveidoto klašu īpašības. Pēc tam senču klases kļūst par sevis specializāciju, iekļaujot jaunas funkcijas.



Ja straumes klase
Ar ifstream var apstrādāt tāpat kā pret istream, kas arī ir.

No straumes klases
Tādā pašā veidā, kā darbojas ifstreams, bet ar izvadi, nevis ievadi, ofstream ir izvades faila straume. Ārpusstraume tiek izmantota tāpat kā cout pēc tam, kad tā ir izveidota, atvērta un pārbaudīta, vai tajā nav kļūdu.

Ios klase
No šīs klases visas straumes klases cēlušās. Ievades un izvades straumes ir divi dažādi veidi.

Tas nosaka straumes daļas, kas nav atkarīgas no straumes ievades vai izvades statusa iOS bāzē.

Atšķirībā no dalībniekiem, kas tiek apspriesti iOS bāzē, šajā daļā ir aprakstīti dalībnieki, kas ir atkarīgi no veidnes parametriem.

Straume (ievade)
iostream bibliotēkas sarežģītības dēļ mēs nevarēsim to pilnībā aptvert šajās nodarbībās. Tomēr mēs uzsvērsim visbiežāk izmantotās funkcijas. Šajā sadaļā mēs aplūkosim ievades klasi no dažādiem leņķiem (istream).

Mēs uzzinājām, ka ieguves operators (>>) tiks izmantots, lai iegūtu datus no ievades straumes.

STRUMS

Programmēšanas valodā C++ ievades straumi apstrādā istream klase. Ievade tiek lasīta un saprasta kā rakstzīmju virkne, izmantojot šos ievades straumes objektus. Ievadi apstrādā cin.

Dalībnieku klases

istream::sentry
Klase, kas veic daudzus uzdevumus un katru reizi tiek veikta ievades procedūra. Tās iznīcinātājam nav jāveic nekādas darbības. Tomēr implementācijas var izpildīt papildu palaišanas vai tīrīšanas uzdevumus straumē, ko koplieto visas ievades darbības, izmantojot sardzes objektu izveidi un iznīcināšanu.

Funkcijas

istream::gcount
Norāda rakstzīmju skaitu, kas iegūts no objekta pēdējās neformatētās ievades darbības. Neformatētās ievades procedūras — iegūt, getline, ignorēt, palūrēt, lasīt, nolasīt dažas, atgriezt un noņemt — maina šīs funkcijas atgriezto vērtību. Tomēr ņemiet vērā, ka, izsaucot peeks, putback vai unget, rakstzīmes netiek iegūtas. Rezultātā skaits vienmēr atgriezīsies 0.

istream::get
Viena rakstzīme izņem vienu rakstzīmi no straumes. Rakstzīme ir iestatīta kā argumenta vērtība vai atgriezta (pirmais paraksts) (otrais paraksts).

C virkne: ja ir norobežojošā rakstzīme, tā netiek noņemta no ievades secības, bet tiek saglabāta kā nākamā rakstzīme, kas tiks izgūta no straumes, ja tāda ir.

istream::getline
Noņem rakstzīmes no straumes kā neformatētu ievadi un saglabā tās kā c-virkni mainīgajā “s”, līdz izvilktā rakstzīme kļūst par norobežojošo rakstzīmi vai “n” rakstzīmes tiek ierakstītas kā “s”. Turklāt metode pārtrauks rakstzīmju izvilkšanu, ja tā sasniegs faila beigas.

Iekšēji funkcija izveido objektu pirms piekļūšanas ievades secībai. Visbeidzot, tas nogalina objektu pirms atgriešanās, izvelkot rakstzīmes no tā saistītā straumes bufera objekta (pieņemot, ka viss ir kārtībā), it kā izpildot vienu no tā dalībmetodēm, sbumpc vai sgetc.

istream::ignorēt
Rakstzīmes tiek ņemtas no ievades secības un izmestas pa vienai, līdz tiek izņemtas vai nu “n” rakstzīmes, vai arī tās tiek salīdzinātas ar delim. Turklāt, ja tiek sasniegts faila beigas, funkcija aptur rakstzīmju izvilkšanu. Funkcija iestata karogu “eofbit”, ja tas sasniedz šo punktu pārāk ātri (pirms n rakstzīmju izvilkšanas vai delim atklāšanas).

Pirms piekļuves ievades secībai funkcija iekšēji konstruē sardzes objektu (ar noskipws būs taisnība). Visbeidzot, tas nogalina sardzes objektu pirms atgriešanās, izvelkot rakstzīmes no saistītā straumes bufera objekta (pieņemot, ka viss ir kārtībā), it kā izpildot vienu no tā dalībnieku metodēm: sbumpc vai sgetc.

istream::operators>>
Izvilkšanas operators (>>) lieto šo operatoru ievades straumei. Tā funkcijai ir pārāk daudz dalībnieku.

Aritmētiskais tips

Rakstzīmes tiek izņemtas no straumes un secīgi parsētas, lai attēlotu pareizā veida vērtību, kas pēc tam tiek saglabāta kā “val” vērtība. Pirms piekļuves ievades secībai funkcija iekšēji konstruē sardzes objektu (noskipws būs nepatiess). Ja viss ir kārtībā, tas palaiž num get::get, lai pabeigtu ekstrakcijas un parsēšanas procesus, vienlaikus mainot straumes iekšējos stāvokļa karogus. Sargs objekts galu galā tiek iznīcināts, pirms tas atstāj.

Funkcija iekšēji ģenerē sardzes objektu pirms ievades secības nolasīšanas, tiek uzskatīts, ka tā veic formatētu ievadi. Visbeidzot, tas nogalina sardzes objektu pirms atgriešanās, izvelkot rakstzīmes no saistītā straumes bufera objekta (pieņemot, ka viss ir kārtībā), it kā izpildot vienu no tā dalībmetode, sbumpc vai sgetc.

Manipulatori

Tiek saukts pf (*this), kur pf varētu būt manipulators. Manipulatori ir rutīnas, kas īpaši izveidotas, lai tās izsauktu, kad tiek izsaukts šis operators. Šī procedūra neietekmē ievades secību, un rakstzīmes netiek izvilktas.

istream::putback
Atjaunotā rakstzīme mēģina pārvietot kursoru uz leju par vienu rakstzīmi straumē, lai pēdējo no straumes izgūto rakstzīmi atkal varētu iegūt, veicot ievades darbības.

Pirms piekļūšanas ievades secībai funkcija iekšēji konstruē sardzes objektu. Pēc tam tas izsauc sputbackc(c) saistītajā straumes bufera objektā (ja tas ir labs). Sargs objekts galu galā tiek iznīcināts, pirms tas atstāj.

istream::lasīt
Lasīt datu bloku:

“n” rakstzīmes tiek ņemtas no straumes un pēc tam tiek saglabātas masīvā, uz kuru norāda “s”. Šī funkcija tikai atkārto datu bloku, nepārbaudot datu saturu vai nepievienojot nulles rakstzīmi beigās.

Funkcijā vispirms tiek izveidots sardzes objekts, pirms tiek piekļūts ievades secībai. Visbeidzot, tas nogalina sardzes objektu pirms atgriešanās, izvelkot rakstzīmes no saistītā straumes bufera objekta (pieņemot, ka viss ir kārtībā), it kā izpildot vienu no tā dalībnieku metodēm: sbumpc vai sgetc.

Zvanošo dalībnieku skaits atgriezīs kopējo rakstzīmju skaitu, ko šī funkcija ir pareizi nolasījusi un saglabājusi.

istream::readsome
Šī funkcija ir atkarīga no konkrētā straumei piesaistītā straumes bufera objekta iekšējās darbības, kura darbība lielā mērā ir standarta klasēm noteikta ieviešanas procesā.

Funkcijā vispirms tiek izveidots sardzes objekts, pirms tiek piekļūts ievades secībai. Pēc tam (ja tas ir veiksmīgs) tas izsauc dalībnieka funkciju straumes bufera objektā, lai noteiktu, cik rakstzīmju tagad ir pieejamas, pirms tiek izsaukts “sbumpc”, lai iegūtu līdz šim rakstzīmju skaitam (vai sgetc). Sargs objekts galu galā tiek iznīcināts, pirms tas atstāj.

istream::seekg
Pozīcija ievades rindā nosaka, kur no ievades straumes tiks izvilkta nākamā rakstzīme. Pirms ievades secības nolasīšanas funkcija iekšēji konstruē sardzes objektu. Pēc tam (ja ir OK), tas veic vienu no diviem izsaukumiem uz atbilstošo straumes bufera objektu: pubseekpos (1) vai pubseekoff (2), (ja tāds ir). Visbeidzot, tas iznīcina sardzes objektu un aiziet.

istream:: sync
Izlīdziniet ievades buferi:

Sinhronizē saistītās straumes bufera kontrolēto ievades secību. Ar straumi savienotā straumes bufera objekta īpašā realizācija nosaka darbības specifiku.

istream::tellg
Iegūstiet ievades secības pozīciju:

Tas norāda pašreizējā rakstzīmes pozīciju ievades straumē. Pēc tam funkcija atgriež -1. Ja dalībnieks neizdodas, tas atgriež patiesu.

Tas atgriež rdbuf()->pubseekoff, ja ne (0,cur,in). Sargs objekts galu galā tiek iznīcināts, pirms tas atstāj.

istream::unget
Noņemt rakstzīmi:

Mēģina pārvietot kursoru uz leju par vienu rakstzīmi straumē, lai pēdējo no straumes izgūto rakstzīmi atkal varētu izvilkt ar ievades darbībām.

Nav biedrs

operators >> (istream)
Ekstrakcijas operators (>>) nodrošina formatētu ievadi ar šo darbību, kad tiek lietots ievades straumē.

Viena rakstzīme: rakstzīmju secība no tās izņem nākamo rakstzīmi un saglabā to kā “c” vērtību. Rakstzīmju izvilkšana no ir un to saglabāšana s kā c-virkne apstājas (ja platums nav nulle), kad tiek konstatēta atstarpes rakstzīme vai ir izvilktas rakstzīmes (platums ()-1).

Rvalue ekstrakcija: ļauj iegūt no rvalue istream objektus, kam ir tāds pats rezultāts kā izvilkšanai no lvalue: Tas izsauc is>>Val.

1. piemērs

Šajā gadījumā mēs pārbaudītu, kā mēs varam iegūt kādu vērtību no lietotāja, un pēc tam parādītu to kā rezultātu ekrānā.

#include
izmantojot nosaukumvieta std ;
starpt galvenais ( )
{
starpt ;
cout << 'Lūdzu, ievadiet numuru' ;
ēšana >> ;
cout << 'Ievadītā vērtība ir: ' << << ' \n ' ;
}

Mēs iekļautu galvenes failu. Tālāk mēs izmantosim nosaukumvietu “std” standarta nosaukumvietā. Mēs izsauktu funkciju main (). Šajā metodē tiks deklarēts mainīgais ar nosaukumu “nē”. Šim mainīgajam ir attēlots datu tips “int”. Termins “int” ir vesela skaitļa saīsinājums. Pēc tam tiek izmantots paziņojums “cout”. Šī komanda izdrukā rindiņu.

Pēc šī teksta parādīšanas ekrānā lietotājs ievadīs jebkuru nejaušu vērtību. Tad būtu izmantots paziņojums “cin”. Šī komanda pieprasa lietotājam norādīt vērtību. Lietotāja ievadītais numurs tiks saglabāts mainīgajā. Lietotāja norādītā vērtība tiktu parādīta ekrānā, izmantojot komandu “cout”.

2. piemērs

Šajā gadījumā mēs redzētu, kā mēs iegūstam jebkuru vārdu no lietotāja un pēc tam parādīsim to ekrānā kā rezultātu.

#include
izmantojot nosaukumvieta std ;

starpt galvenais ( )

{

char nosaukums [ 125 ] ;
cout << 'Ievadiet savu vārdu' << endl ;


ēšana >> ws ;

ēšana . getline ( vārds, 125 ) ;

cout << nosaukums << endl ;

atgriezties 0 ;

}

Mēs iekļaujam galvenes failu . Tālāk mēs izmantosim standarta nosaukumvietu kā “std”. Mēs izsauktu galveno () funkciju. Šīs metodes ietvaros mēs deklarēsim mainīgo. Šim mainīgajam ir datu tips “char”. Tad tiek izmantots paziņojums “cout”. Šī komanda ekrānā parāda tekstu “Ievadiet savu vārdu”. Pēc šī teksta parādīšanas ekrānā lietotājs ievadīs jebkuru vārdu. Pēc tam mēs izmantotu paziņojumu “cin”.

Šī komanda ņem vērtību no lietotāja. Norādītais nosaukums tiks saglabāts mainīgajā “ws”. Šeit mēs atkal izmantotu komandu “cin”. Šajā komandā tiek lietota funkcija getline(). Šī funkcija satur parametru, kas ietver lietotāja ievadīto nosaukumu un vārda garumu. Komanda “cout” tiks izmantota, lai parādītu lietotāja norādīto vārdu. Lai pārtrauktu kodu, tiks izmantota komanda 'atgriezt 0'.

Secinājums

Pirmkārt, mēs runājām par to, kas ir C++ istream funkcijas. Pēc tam mēs novērojam vairākas funkcijas un svarīgas minētās definīcijas. Šajā rakstā mēs esam palaiduši dažādus kodus, kas satur dažādas istream funkcijas. Pirmajā kodā mēs no lietotāja paņemam jebkuru numuru un parādām šo numuru ekrānā. Otrajā lietotājs ievadīja vārdu un izdrukāja to uz ekrāna.