Hva er Streams i C ++?
C ++ gir brukere et antall biblioteker som de kan bruke til å utføre input / output oppgaver. Disse oppgavene gjøres i form av bytesekvenser, populært kalt streams.
Bekkene er delt i to:
Typer strømmer
- Inngangsstrøm: Dette er en type strøm der bytene flyter fra en enhet som et tastatur til hovedminnet.
- Utgangsstrøm: Dette er en type strøm der bytene flyter i motsatt retning, det vil si fra hovedminne og deretter til enheten, for eksempel skjerm.
I denne C ++ opplæringen lærer du:
- Hva er Streams i C ++?
- Hvordan fungerer strømmer?
- Funksjonstabell
- C ++ topptekstfiler for inngang / utgang
- std :: cout
- std :: cin
- std :: cerr
- std :: tette
- Feilhåndtering med IO-strømmer:
Hvordan fungerer strømmer?
C ++ -strømmer fungerer som følger:
- Først initialiseres en strøm med riktig type.
- Deretter bør du oppgi hvor I / O vil skje ved hjelp av få / put-pekere.
- Etter å ha kommet til riktig sted i en strøm, kan du utføre input- og output-oppgaver ved hjelp av henholdsvis >> og << -operatører.
Funksjonstabell
Følgende er funksjonene som tilbys i stream.h header-filen:
Klasse | Funksjoner |
Filebuf | Den setter filbuffere til å lese / skrive. Den har nær () og åpne () funksjoner i den |
fstreambase | Det er basisklassen for klassene ifstream, fstream og ofstream. Driften er vanlig for filstrømmene. |
ifstream | Det er en strømfilklasse for inngangsfiler for å levere inngangsoperasjoner. |
ofstream | Det er en utgangsfilstrømsklasse for å levere utdataoperasjoner. |
fstream | Det er en inngangs- / utgangsstrømsklasse. Den støtter samtidig inngang / utgang. |
C ++ topptekstfiler for inngang / utgang
C ++ har tre biblioteker som kommer med funksjoner for å utføre grunnleggende inn / ut-oppgaver. De inkluderer:
- Iostream: Det er et akronym for standard inn / ut-strøm. Denne headerfilen kommer med definisjoner for objekter som cin / cout / cerr.
- Iomanip: Det er et akronym for input / output manipulatorer. Biblioteket leveres med funksjoner som kan brukes til manipulering av strømmer. Den inneholder definisjoner for objekter som setw, setprecision og andre.
- Fstream: Dette er en headerfil for å beskrive filstrømmen . Den håndterer data som blir lest fra filen som input eller som skrives til en fil, output.
Cin og cout nøkkelordene er veldig populære i C ++. De brukes til å ta henholdsvis innganger og utskrifter. For å bruke dem, må du inkludere iostream header-fil i programmet ditt. Årsaken er at de er definert i den headerfilen. Unnlatelse av å inkludere iostream header-fil vil generere en feil. Dette skyldes at C ++ - kompilatoren ikke har forstått betydningen av nøkkelordene.
De viktigste objektene som er definert i iostream header-filen er cin, cout, cerr og clog. La oss diskutere dem.
std :: cout
Cout-objektet er en forekomst av iostream-klassen. Den brukes til å produsere utdata på en standard utgangsenhet, som normalt er skjermen. Den brukes sammen med strøminnføringsoperatøren (<<).
Eksempel:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen der cout-objektet er definert.
- Inkluder std navneområdet slik at vi ikke trenger å ringe det når vi bruker klassene.
- Ring til hovedfunksjonen (). Programkoden skal legges til i kroppen. Den åpnede krøllbøylen {markerer begynnelsen på kroppen.
- Opprett en tegnvariabel som heter velkommen for å holde strengen Velkommen til Guru99.
- Skriv ut verdien av strengen velkomst på konsollen. Endl er et C ++ nøkkelord som betyr sluttlinje. Den beveger markøren for å begynne å skrive ut tekst på neste linje.
- Programmet må returnere verdi etter vellykket gjennomføring.
- Slutten av hoveddelen av funksjonen ().
std :: cin
Cin-objektet er en forekomst av istream-klassen. Den leser inngang fra inngangsenheten, tastaturet. Det brukes normalt sammen med utvinningsoperatøren (>>). Ekstraksjonsobjektet er ansvarlig for å trekke ut data som er tastet inn via tastaturet fra cin-objektet.
Eksempel:
Følgende eksempel viser hvordan du bruker cin-nøkkelordet i C ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i programmet vårt. Cin-objektet er definert i denne headerfilen.
- Inkluder std navneområdet for å bruke klassene. Du trenger ikke å ringe std når du bruker klassene.
- Ring til hovedfunksjonen (). Programkoden skal legges til i kroppen.
- Starten på selve programmet.
- Erklær en heltallvariabel med navnet.
- Skriv ut en melding på skjermen der du blir bedt om å oppgi et nummer.
- Les verdien du har angitt av brukeren på konsollen fra tastaturet.
- Skriv ut verdien som er lest ovenfor på konsollen sammen med annen tekst.
- Programmet skal returnere en verdi hvis det kjøres vellykket.
- Slutten på kroppen til hovedfunksjonen.
std :: cerr
Cerr-objektet danner standard feilstrøm for utdatafeil i C ++. Cerr er en forekomst av ostream-klassen. Cerr-gjenstanden er ubufret. Dette betyr at den brukes når en feilmelding skal vises umiddelbart.
Siden den ikke er bufret, lagrer den ikke feilmelding for senere visning. Den brukes sammen med strøminnføringsoperatøren (<<).
Eksempel:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-fil der cerr-objektet er definert.
- Inkluder std navneområdet slik at vi ikke trenger å ringe det når vi bruker klassene.
- Ring til hovedfunksjonen (). Programlogikken skal legges til i kroppen. Den åpnede krøllbøylen markerer begynnelsen på funksjonen.
- Bruk cerr-objektet til å skrive ut en feil på konsollen.
- Programmet må returnere en verdi etter vellykket gjennomføring.
- Slutten på kroppen til hovedfunksjonen.
std :: tette
Tetteobjektet er en forekomst av ostream-klassen. Den brukes til å vise feil på standardskjermen, skjermen. Det ligner på cerr-objektet, men det er bufret. Siden den er bufret, lagrer den feilmeldingen i bufferen til bufferen er fylt / spylt. Den brukes sammen med strøminnføringsoperatøren (<<).
Eksempel:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil der tetteobjektet er definert.
- Inkludert std navneområdet slik at vi kan bruke klassene dets uten å kalle det.
- Ringer til hovedfunksjonen (). Programlogikken skal legges til i kroppen. {Markerer begynnelsen på funksjonens kropp.
- Bruk tetteobjektet til å skrive ut en feil på standardutgangen, skjermen.
- Programmet må returnere en verdi etter vellykket gjennomføring.
- Slutten av funksjonen hoved ().
Feilhåndtering med IO-strømmer:
For å sjekke om en strøm er gyldig eller ikke, kan du bruke den som en boolsk.
Her er et eksempel:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
For å få mer informasjon om strømstatusen, kan du bruke disse funksjonene:
- bra () - vil returnere sant hvis alt er i orden.
- dårlig () - vil returnere true hvis det oppstår en alvorlig feil.
- fail () - vil returnere true etter mislykket strømoperasjon.
- eof () - vil returnere true hvis den når slutten av en fil.
For å vite om en bestemt lese / skrive-operasjon mislyktes, må du teste lese resultatet.
For eksempel, for å sjekke om brukeren har angitt et gyldig heltall, gjør du dette:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Sammendrag
- Inngangs- og utgangsoppgavene i C ++ gjøres via bytesekvens. Byte kalles strømmer.
- I en inngangsstrøm flyter bytene fra inngangsenheten som et tastatur til hovedminnet.
- I en utgangsstrøm går bytene fra hovedminnet til en utgangsenhet som en skjerm.
- Cin-objektet er en forekomst av istream-klassen. Den leser inngang fra en inngangsenhet som tastaturet.
- Cout-objektet er en forekomst av ostream-klassen. Den produserer utdata på utdataenheter som skjermen.
- Cerr-objektet er en forekomst av ostream-klassen. Det viser feilobjekter på skjermen.
- Tetteobjektet er forekomst av ostream-klassen. Den viser feilmeldinger på utdataenheter.
- Tetteobjektet bufrer feilmeldinger, mens cerr-objektet ikke gjør det.