C ++ Istream -funksjoner

C ++ Istream -funksjoner
Begrepet "strøm" i C ++ beskriver strømmen av tegn mellom programtråden og I/O. C ++ strømklasser er nødvendige 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.

Strømklassehierarki

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

flyte, dobler og klasser er datatyper som ligner int. En unik variabel med en klasse som datatype blir referert til som et C ++ -objekt. De forhåndsbestemte spesielle objektene '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:

Istream
Ethvert formål kan betjenes av denne inngangsstrømmen. En illustrasjon av et istream er CIN.

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

Hvis strøm
Det er en strøm av inngangsfiler.

Av strøm
Det er en strøm av utgangsfiler. Arv er en forestilling som brukes sterkt i objektorientert programmering, for eksempel i C ++, der noen klasser tar på seg egenskapene til andre klasser som allerede er opprettet. Forfederklassene blir deretter spesialiseringer av seg selv gjennom inkludering av nye funksjoner.

Hvis strømklasse
En ifstream kan behandles på samme måte som et istream, og det er hva det er.

Av strømklasse
På samme måte som IfStreams fungerer, men med utgang i stedet for input, er en OfStream en utgangsfilstrøm. En avstrøm brukes på samme måte som cout etter å ha blitt konstruert, åpnet og verifisert for å ikke ha noen feil.

IOS -klasse
Fra denne klassen kom alle strømklasser ned. Inngangs- og utgangsstrømmer er to forskjellige typer.

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

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

Strøm (input)
På grunn av Iostream -bibliotekets kompleksitet, vil vi ikke kunne dekke det helt i disse leksjonene. Imidlertid vil vi trekke frem funksjonene som brukes mest. I denne delen skal vi se på inngangsklassen fra en rekke vinkler (Istream).

Vi har lært at utvinningsoperatøren (>>) vil bli brukt til å skaffe dataene fra en inngangsstrøm.

Istream

På programmeringsspråket C ++ blir inngangsstrømmen håndtert av Istream -klassen. Innspillet blir lest og forstått som en serie tegn som bruker disse inngangsstrømobjektene. Innspillet håndteres av CIN.

Medlemsklasser

Istream :: Sentry
En klasse som utfører mange oppgaver og hver gang en inngangsprosedyre utføres. Destructor er ikke pålagt å utføre noen handlinger. Imidlertid kan implementeringer utføre ytterligere oppstarts- eller opprydningsoppgaver på strømmen som deles av alle inngangsoperasjoner ved å bruke opprettelsen og ødeleggelsen av Sentry -objekter.

Funksjoner

Istream :: gCount
Gir karaktertallet som ble hentet fra objektets siste uformaterte inngangshandling. De uformaterte inngangsprosedyrene- get, getline, ignor. Husk imidlertid at det ikke trekker ut noen tegn på å ringe kikk, tilbakeslag eller ungett. Som et resultat vil tellingen alltid returnere 0.

istream :: få
Enkeltkarakteren tar en karakter ut av strømmen. Karakteren er enten satt som argumentets verdi eller returnert (første signatur) (andre signatur).

C -streng: Hvis det avgrensende tegnet er til stede, blir den ikke fjernet fra inngangssekvensen i stedet holdes som følgende tegn som skal hentes fra strømmen hvis den er til stede.

Istream :: getline
Fjerner tegn fra strømmen som uformatert inngang og lagrer dem som en C-streng i variabelen “S” til det ekstraherte tegnet blir det avgrensende tegnet eller “N” -karakterene 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 inngangssekvensen. Til slutt dreper det objektet før du kommer tilbake, og henter ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om å utføre en av medlemmetodene, SBUMPC eller SGETC.

Istream :: Ignorer
Karakterer er hentet fra inngangssekvensen og kastes en om gangen til enten "N" -tegn er tatt ut eller en sammenligner lik Delim. I tillegg, hvis slutten av filen er nådd, stopper funksjonen tegnekstraksjon. Funksjonen angir "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 vaktpostobjekt internt (med noskipws vil være sant). Til slutt dreper det Sentry -objektet før du kommer tilbake, og henter ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om utførelse av en av medlemmetodene: SBUMPC eller SGETC.

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

Aritmetisk type

Karakterer blir tatt ut av strømmen og analyseres sekvensielt for å representere en verdi av riktig type, som deretter lagres som verdien av "val". Før du får tilgang til inngangssekvensen, konstruerer funksjonen et Sentry -objekt internt (Noskipws vil være falsk). Hvis alt sjekker ut godt, kjører det NUM få :: Få fullfører utvinnings- og analyseringsprosessene mens du endrer strømmenes interne tilstandsflagg. Sentry -objektet blir til slutt ødelagt før det forlater.

Funksjonen genererer internt et Sentry -objekt før du leser inngangssekvensen, det blir sett på som utførende formatert inngang. Til slutt dreper den Sentry -objektet før du kommer tilbake, og henter ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om utførelse av en av medlemmetodene, SBUMPC eller SGETC.

Manipulatorer

PF (*dette) kalles, hvor PF kan være en manipulator. Manipulatorer er rutiner som er opprettet spesielt for å bli kalt når denne operatøren blir påkalt. Inngangssekvensen påvirkes ikke av denne prosedyren, og ingen tegn blir trukket ut.

IStream :: tilbakeslag
Den restaurerte karakteren prøver å flytte markøren ned ett tegn i strømmen slik at den siste karakteren hentet fra strømmen igjen kan trekkes ut ved inngangsoperasjoner.

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

Istream :: Les
Les en datablokk:

'N' -karakterene er hentet fra strømmen og lagres deretter i matrisen som er pekt på av "S". Denne funksjonen gjentar bare en blokk med data uten å inspisere dataens innhold eller legge til et nullkarakter på slutten.

Innenfor funksjonen opprettes det først et Sentry -objekt før inngangssekvensen er tilgjengelig. Til slutt dreper det Sentry -objektet før du kommer tilbake, og henter ut tegn fra det tilhørende strømbufferobjektet (forutsatt at alt er i orden) som om utførelse av en av medlemmetodene: SBUMPC eller SGETC.

RING MEDLEMT TELSE VIL RETUR Det totale antallet tegn denne funksjonen har lest og lagret ordentlig.

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

Innenfor funksjonen opprettes det først et Sentry -objekt før inngangssekvensen er tilgjengelig. Deretter (hvis vellykket), kaller den medlemsfunksjonen i strømbufferobjektets nytte for å bestemme hvor mange tegn som nå er tilgjengelige før du kaller “SBUMPC” for å trekke ut til antall tegn (eller SGETC). Sentry -objektet blir til slutt ødelagt før det forlater.

Istream :: Seekg
Posisjonen i inngangslinjen bestemmer hvor følgende tegn vil bli trukket fra inngangsstrømmen. Før du leser inngangssekvensen, konstruerer funksjonen internt et vaktpostobjekt. Så (hvis OK), ringer det en av to samtaler til det tilsvarende strømbufferobjektet: PubseEkpos (1) eller Pubseekoff (2), (hvis noen). Til slutt utsletter den Sentry -varen og avgår.

Istream :: Synkronisering
Juster inngangsbufferen:

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

Istream :: Tellg
Få inngangssekvensens posisjon:

Det gir den nåværende karakterens posisjon i inngangsstrømmen. Funksjonen returnerer deretter -1. Hvis medlemmet mislykkes, returnerer det sant.

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

Istream :: Unget
Fjern karakter:

Prøver å flytte markøren ned ett tegn i strømmen slik at den siste karakteren hentet fra strømmen igjen kan tas ut ved inngangsoperasjoner.

Ikke medlem

Operatør >> (Istream)
Ekstraksjonsoperatøren (>>) gir formatert inngang med denne handlingen når den brukes på en inngangsstrøm.

Én karakter: Karaktersekvensen tar den neste karakteren ut av den og lagrer den som verdien av “C”. Prosessen med å trekke ut tegn fra IS og lagring av dem i S, som en C-streng, stopper (hvis bredden ikke er null) når et hvitromstegn oppstår eller (bredde () -1) tegn er trukket ut.

Ekstraksjon av Rvalue: Aktiverer utvinning fra Rvalue Istream -objekter, som har samme resultat som å trekke ut fra LValues: Det ringer er >> 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.

#inkludere
ved hjelp av navneområdet STD;
int main ()

int nei;
cout<<"Please enter a number ";
cin >> nei;
cout<<"The entered value is: " << no << "\n";

Vi vil inkludere overskriftsfilen. Neste, vi bruker navneområdet 'STD' i standardnavnet. Vi vil kalle funksjonen Main (). En variabel med navnet "Nei" vil bli erklært innenfor denne metoden. "Int" datatypen er representert for denne variabelen. Begrepet "int" er forkortelsen av et heltall. Etterpå brukes 'cout' uttalelsen. Denne kommandoen skriver ut linjen.

Brukeren vil legge inn enhver tilfeldig verdi etter at denne teksten er vist på skjermen. Deretter ville "CIN" -uttalelsen blitt brukt. Denne kommandoen krever at brukeren indikerer verdien. Brukerens angitte nummer vil bli lagret i en variabel. Verdien gitt av brukeren vil vises på skjermen ved hjelp av 'cout' -kommandoen.

Eksempel 2

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

#inkludere
ved hjelp av navneområdet STD;
int main ()

char -navn [125];
cout << "Enter your name" << endl;
cin >> ws;
cin.getline (navn, 125);
cout << name << endl;
retur 0;

Vi vil innlemme overskriftsfilen . Deretter vil vi bruke standard navneområdet som 'STD'. Vi vil påkalle main () -funksjonen. Innenfor denne metoden vil vi erklære en variabel. Denne variabelen har datatypen 'Char'. Da er "cout" -uttalelsen ansatt. Denne kommandoen viser teksten 'Enter Your Name' på skjermen. Etter å ha vist denne teksten på skjermen, vil brukeren oppgi et hvilket som helst navn. Deretter ville vi bruke "CIN" -erklæringen.

Denne kommandoen tar verdien fra brukeren. Det medfølgende navnet vil bli lagret i en variabel 'ws'. Her, nok en gang, ville vi bruke 'CIN' -kommandoen. Innenfor denne kommandoen blir Getline () -funksjonen brukt. Denne funksjonen inneholder parameteren som inkluderer navnet som er angitt av brukeren og lengden på navnet. Kommandoen 'cout' vil bli brukt til å vise navnet som er gitt av brukeren. For å avslutte koden, vil kommandoen 'Return 0' bli brukt.

Konklusjon

Først snakket vi om hva som er C ++ Istream -funksjoner. Så observerer vi flere funksjoner og viktige definisjoner som er 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 nummeret på skjermen. I den andre skrev brukeren inn navnet og skrev ut navnet på skjermen.