C++ istream-funksjoner

C Istream Funksjoner



Begrepet 'stream' i C++ beskriver flyten av tegn mellom programtråden og i/o. C++-strømklasser er nødvendig for å legge inn og sende ut handlinger på IO-enheter og filer. Disse klassene er designet for å administrere programmets input og output, og de har spesiell funksjonalitet.

Stream klassehierarki

En C++-klasse består av metoder som kreves for å administrere og styre dataene den inneholder.

float, dobler og klasser er datatyper som ligner på int. En unik variabel med en klasse som datatype omtales som et C++-objekt. De forhåndsspesifiserte spesialobjektene 'cin' og 'cout' har forskjellige klasser som datatyper.







Dataene skrevet til 'cout' eller lest fra 'cin' er eksempler på datastrømmer inn eller ut av programmer i C++. For øyeblikket vurderer vi følgende fire klasser for denne:



Stream det
Ethvert formål kan tjenes av denne inndatastrømmen. En illustrasjon av en istream er cin.



Ostream
Det er en utgangsstrøm med flere bruksområder. Ostreams kommer i form av cout og cin.





Hvis stream
Det er en strøm av inndatafiler.

Av strøm
Det er en strøm av utdatafiler. Arv er en forestilling som er mye brukt i objektorientert programmering, for eksempel i C++, der noen klasser tar på seg egenskapene til andre klasser som allerede er opprettet. Forfedreklassene blir da spesialiseringer av seg selv gjennom inkludering av nye funksjoner.



Hvis stream klasse
En ifstream kan behandles på samme måte som en istream, som er hva den er.

Av stream klasse
På samme måte som ifstreams fungerer, men med utdata i stedet for input, er en ofstream en utdatafilstrøm. En ofstream brukes på samme måte som cout etter å ha blitt konstruert, åpnet og bekreftet at den ikke har noen feil.

Ios klasse
Fra denne klassen kom alle strømmeklasser ned. Inn- og utgangsstrømmer er to forskjellige typer.

Den definerer strømdelene som er uavhengige av strømmens inn- eller utgangsstatus i iOS-basen.

I motsetning til medlemmene som er omtalt i ios-basen, er medlemmene som er avhengige av malparametrene beskrevet i denne delen.

Strøm (inngang)
På grunn av kompleksiteten til iostream-biblioteket, vil vi ikke kunne dekke det helt i disse leksjonene. Vi vil imidlertid fremheve funksjonene som brukes mest. I denne delen skal vi se på inngangsklassen fra en rekke vinkler (istream).

Vi har lært at ekstraksjonsoperatøren (>>) vil bli brukt til å hente data fra en inngangsstrøm.

STRØM

I programmeringsspråket C++ håndteres inngangsstrømmen av istream-klassen. Inndata leses og forstås som en serie med tegn som bruker disse input-strømobjektene. Innspillet håndteres av cin.

Medlemsklasser

istream::sentry
En klasse som utfører mange oppgaver og hver gang det utføres en inndataprosedyre. Destruktoren er ikke pålagt å utføre noen handlinger. Imidlertid kan implementeringer utføre ytterligere oppstarts- eller oppryddingsoppgaver på strømmen som deles av alle inndataoperasjoner ved å bruke opprettelse og ødeleggelse av vaktobjekter.

Funksjoner

istream::gcount
Gir tegnantallet som ble hentet fra objektets siste uformaterte inndatahandling. De uformaterte inndataprosedyrene – get, getline, ignore, peek, read, read some, putback og unget – endrer verdien som returneres av denne funksjonen. Men husk at det å ringe kikker, putback eller unget ikke trekker ut noen tegn. Som et resultat vil tellingen alltid returnere 0.

istream::get
Enkelttegn tar én karakter ut av strømmen. Tegnet settes enten som argumentets verdi eller returneres (første signatur) (andre signatur).

C-streng: Hvis skilletegnet er tilstede, fjernes det ikke fra inndatasekvensen, i stedet beholdes som følgende tegn som skal hentes fra strømmen hvis det er til stede.

istream::getline
Fjerner tegn fra strømmen som uformatert inndata og lagrer dem som en c-streng i variabelen 's' til det utpakkede tegnet blir skilletegnet eller 'n' tegn er skrevet til 's'. I tillegg vil metoden slutte å trekke ut tegn hvis den når slutten av filen.

Internt oppretter funksjonen et objekt før du får tilgang til inndatasekvensen. Til slutt dreper den objektet før det returnerer, og trekker ut tegn fra dets tilknyttede strømbufferobjekt (forutsatt at alt er i orden) som om den kjører en av medlemsmetoderne, sbumpc eller sgetc.

istream::ignorer
Tegn tas fra inntastingssekvensen og forkastes én om gangen til enten 'n' tegn er tatt ut eller man sammenligner lik med delim. I tillegg, hvis slutten av filen er nådd, stopper funksjonen tegnutvinning. Funksjonen setter 'eofbit'-flagget hvis det når dette punktet for tidlig (før du trekker ut n tegn eller oppdager delim).

Før du får tilgang til inngangssekvensen, konstruerer funksjonen et vaktobjekt internt (med noskipws vil være sant). Til slutt dreper den vaktpostobjektet før den returnerer, og trekker ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om den kjører en av medlemsmetodene: sbumpc eller sgetc.

istream::operatør >>
Ekstraksjonsoperatøren (>>) bruker denne operatøren på en inngangsstrøm. Den har for mange medlemmer som funksjon.

Aritmetisk type

Tegn tas ut av strømmen og analyseres sekvensielt for å representere en verdi av riktig type, som deretter lagres som verdien til 'val'. Før du får tilgang til inngangssekvensen, konstruerer funksjonen et vaktobjekt internt (noskipws vil være falsk). Hvis alt sjekker ut bra, kjører det num get::get for å fullføre utvinnings- og parsingsprosessene mens du endrer de interne tilstandsflaggene til strømmen. Sentry-objektet blir til slutt ødelagt før det drar.

Funksjonen genererer internt et vaktobjekt før den leser inndatasekvensen, det blir sett på som å utføre formatert input. Til slutt dreper det vaktpostobjektet før det returnerer, og trekker ut tegn fra dets tilknyttede strømbufferobjekt (forutsatt at alt er i orden) som om den kjører en av medlemsmetodene, sbumpc eller sgetc.

Manipulatorer

pf (*dette) kalles, hvor pf kan være en manipulator. Manipulatorer er rutiner som er laget spesielt for å bli tilkalt når denne operatøren påkalles. Inndatasekvensen påvirkes ikke av denne prosedyren, og ingen tegn trekkes ut.

istream::putback
Det gjenopprettede tegnet prøver å flytte markøren ned ett tegn i strømmen slik at det siste tegnet hentet fra strømmen igjen kan trekkes ut ved inndataoperasjoner.

Før du får tilgang til inngangssekvensen, konstruerer funksjonen et vaktobjekt internt. Den kaller deretter sputbackc(c) på det tilhørende strømbufferobjektet (hvis bra). Sentry-objektet blir til slutt ødelagt før det drar.

istream::read
Les en datablokk:

'n'-tegnene er hentet fra strømmen og lagres deretter i matrisen som er pekt på med 's'. Denne funksjonen replikerer bare en blokk med data uten å inspisere datainnholdet eller legge til et nulltegn på slutten.

Innenfor funksjonen opprettes først et vaktobjekt før inngangssekvensen åpnes. Til slutt dreper den vaktpostobjektet før den returnerer, og trekker ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om den kjører en av medlemsmetodene: sbumpc eller sgetc.

Antallet medlemmer som ringer vil returnere det totale antallet tegn som denne funksjonen har lest og lagret på riktig måte.

istream::readsome
Denne funksjonen er avhengig av den indre funksjonen til det spesifikke strømbufferobjektet knyttet til strømmen, hvis oppførsel i stor grad er implementeringsdefinert for standardklasser.

Innenfor funksjonen opprettes først et vaktobjekt før inngangssekvensen åpnes. Deretter (hvis vellykket), kaller den medlemsfunksjonen i strømbufferobjektets tilgjengelighet for å bestemme hvor mange tegn som nå er tilgjengelige før den kaller 'sbumpc' for å trekke ut opptil det antallet tegn (eller sgetc). Sentry-objektet blir til slutt ødelagt før det drar.

istream::seekg
Posisjonen i inngangslinjen bestemmer hvor følgende tegn vil bli trukket fra inndatastrømmen. Før inndatasekvensen leses, konstruerer funksjonen internt et vaktobjekt. Deretter (hvis OK), foretar den ett av to anrop til det tilsvarende strømbufferobjektet: pubseekpos (1) eller pubseekoff (2), (hvis noen). Til slutt utsletter den vaktposten og drar.

istream::sync
Juster inngangsbufferen:

Synkroniserer den koblede strømbufferens kontrollerte inngangssekvens. Den spesifikke implementeringen av strømbufferobjektet koblet til strømmen bestemmer operasjonens spesifikasjoner.

istream::tellg
Få inndatasekvensens posisjon:

Det gir gjeldende karakters posisjon i inndatastrømmen. Funksjonen returnerer da -1. Hvis medlemmet mislykkes, returnerer det sant.

Den returnerer rdbuf()->pubseekoff hvis ikke (0,cur,in). Sentry-objektet blir til slutt ødelagt før det drar.

istream::unget
Fjern tegn:

Prøver å flytte markøren ned ett tegn i strømmen slik at det siste tegnet hentet fra strømmen igjen kan trekkes ut ved inndataoperasjoner.

Ikke medlem

operatør >> (istream)
Uttrekksoperatøren (>>) gir formatert inndata med denne handlingen når den brukes på en inndatastrøm.

Ett tegn: Tegnsekvensen tar det neste tegnet ut av det og lagrer det som verdien av 'c'. Prosessen med å trekke ut tegn fra er og lagre dem i s, som en c-streng, stopper (hvis bredden ikke er null) når et mellomromstegn oppstår eller (bredde ()-1) tegn har blitt trukket ut.

Ekstraksjon av rvalue: gjør det mulig å trekke ut fra rvalue istream-objekter, som har samme resultat som å trekke ut fra lverdier: Den kaller is>>Val.

Eksempel 1

I dette tilfellet vil vi undersøke hvordan vi kan få noen verdi fra brukeren og deretter vise den som resultat på skjermen.

#include
ved hjelp av navneområde std ;
int hoved- ( )
{
int Nei ;
cout << 'Vennligst skriv inn et tall' ;
spiser >> Nei ;
cout << 'Den angitte verdien er: ' << Nei << ' \n ' ;
}

Vi vil inkludere -hodefilen. Deretter bruker vi navneområdet 'std' i standard navneområde. Vi vil kalle funksjonen main(). En variabel kalt 'nei' vil bli erklært i denne metoden. Datatypen 'int' er representert for denne variabelen. Begrepet 'int' er forkortelsen av et heltall. Etterpå brukes 'cout'-utsagnet. Denne kommandoen skriver ut linjen.

Brukeren vil legge inn en tilfeldig verdi etter at denne teksten har blitt vist på skjermen. Da ville 'cin'-setningen blitt brukt. Denne kommandoen krever at brukeren angir verdien. Brukerens angitte nummer vil bli lagret i en variabel. Verdien oppgitt av brukeren vil bli vist på skjermen ved å bruke 'cout'-kommandoen.

Eksempel 2

I dette tilfellet vil vi se hvordan vi får et navn fra brukeren og deretter vise det på skjermen som resultatet.

#include
ved hjelp av navneområde std ;

int hoved- ( )

{

røye Navn [ 125 ] ;
cout << 'Skriv inn navnet ditt' << endl ;


spiser >> ws ;

spiser . getline ( Navn, 125 ) ;

cout << Navn << endl ;

komme tilbake 0 ;

}

Vi vil inkludere overskriftsfilen . Deretter vil vi bruke standard navneområde som 'std'. Vi vil påkalle hoved()-funksjonen. Innenfor denne metoden vil vi deklarere en variabel. Denne variabelen inneholder datatypen «char». Deretter brukes 'cout'-uttalelsen. Denne kommandoen viser teksten 'Skriv inn navnet ditt' på skjermen. Etter å ha vist denne teksten på skjermen, skriver brukeren inn et hvilket som helst navn. Deretter vil vi bruke 'cin'-setningen.

Denne kommandoen tar verdien fra brukeren. Det angitte navnet vil bli lagret i en variabel 'ws'. Her vil vi igjen bruke 'cin'-kommandoen. Innenfor denne kommandoen brukes getline()-funksjonen. Denne funksjonen inneholder parameteren som inkluderer navnet angitt av brukeren og lengden på navnet. 'cout'-kommandoen vil bli brukt til å vise navnet oppgitt av brukeren. For å avslutte koden, vil 'retur 0'-kommandoen bli brukt.

Konklusjon

Først snakket vi om hva som er C++ istream-funksjoner. Deretter observerer vi flere funksjoner og viktige definisjoner nevnt. I denne artikkelen har vi kjørt forskjellige koder som inneholder en rekke istream-funksjoner. I den første koden tar vi et hvilket som helst nummer fra brukeren og viser det nummeret på skjermen. I den andre skrev brukeren inn navnet og skrev det ut på skjermen.