C++ Grunnleggende input/output: Cout, Cin, Cerr Eksempel
Hva er Streams i C++?
C++ gir brukerne en rekke biblioteker som de kan bruke til å utføre input/output-oppgaver. Disse oppgavene gjøres i form av bytesekvenser, populært kalt streams.
Strømmene er delt i to:
Typer bekker
- Inndatastrøm: Dette er en type strøm der bytene flyter fra en enhet som et tastatur til hovedminnet.
- Utdatastrøm: Dette er en type strøm der bytene flyter i motsatt retning, det vil si fra hovedminnet og deretter til enheten som skjermen.
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 get/put-pekere.
- Etter å ha kommet til riktig plassering i en strøm, kan du utføre inndata- og utdataoppgaver ved å bruke henholdsvis >> og << operatører.
Funksjonstabell
Følgende er funksjonene i stream.h-headerfilen:
Klasse | Funksjoner |
---|---|
Filebuf | Den setter filbuffere for å lese/skrive. Den har close() og open() funksjoner i seg |
fstreambase | Det er basisklassen for klassene ifstream, fstream og ofstream. Dens operasjoner er felles for filstrømmene. |
ifstream | Det er en inndatafilstrømklasse for å gi inndataoperasjoner. |
av strømmen | Det er en utdatafilstrømklasse for å gi utdataoperasjoner. |
fstream | Det er en input/output stream-klasse. Den støtter samtidige input/output-operasjoner. |
C++ Header-filer for Input/ Output
C++ gir tre biblioteker som kommer med funksjoner for å utføre grunnleggende input/out-oppgaver. De inkluderer:
- Iostream: Det er et akronym for standard input/output stream. Denne overskriftsfilen kommer med definisjoner for objekter som cin/cout/cerr.
- Iomanip: Det er et akronym for input/output manipulatorer. Biblioteket kommer med funksjoner som kan brukes til å manipulere strømmer. Den inneholder definisjoner for objekter som setw, setprecision og andre.
- Fstream: Dette er en overskriftsfil for å beskrive filstrømmen. Den håndterer data som leses fra fil som input eller som er skrevet til en fil, output.
Nøkkelordene cin og cout er veldig populære i C++. De brukes til å ta henholdsvis inndata og utskrifter. For å bruke dem må du inkludere iostream header-fil i programmet. Årsaken er at de er definert i den overskriftsfilen. Unnlatelse av å inkludere iostream-headerfilen vil generere en feil. Dette skyldes en fiasko fra C++ kompilator for å forstå betydningen av søkeordene.
Hovedobjektene som er definert i iostream-headerfilen 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 utenhet, som vanligvis er skjermen. Den brukes sammen med strøminnsettingsoperatoren (<<).
Eksempel
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-header-filen der cout-objektet er definert.
- Inkluder std-navneområdet slik at vi ikke trenger å kalle det når vi bruker klassene.
- Kalle hoved()-funksjonen. Programkoden skal legges til i hoveddelen. Den krøllete åpningen { markerer begynnelsen av kroppen.
- Lag en tegnvariabel kalt velkommen for å holde strengen Velkommen til Guru99.
- Skriv ut verdien av velkomststrengen på konsollen. Endl er en C++ nøkkelord som betyr sluttlinje. Den flytter markøren for å begynne å skrive ut tekst på neste linje.
- Programmet må returnere verdi ved vellykket utførelse.
- Slutten av hoveddelen av funksjonen main().
std::cin
cin-objektet er en forekomst av istream-klassen. Den leser inndata fra inndataenheten, tastaturet. Den brukes normalt sammen med avtrekksoperatøren (>>). Uttrekksobjektet er ansvarlig for å trekke ut data som legges inn via tastaturet fra cin-objektet.
Eksempel
Følgende eksempel viser hvordan du bruker nøkkelordet cin i C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet vårt. cin-objektet er definert i denne overskriftsfilen.
- Inkluder std-navneområdet for å bruke klassene. Du trenger ikke å ringe std når du bruker klassene.
- Kalle hoved()-funksjonen. Programkoden skal legges til i hoveddelen.
- Starten på hoveddelen av programmet.
- Erklære en heltallsvariabel navngitt nummer.
- Skriv ut en melding på skjermen som ber brukeren om å angi et nummer.
- Les verdien 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 av kroppen av hovedfunksjonen.
std::cerr
cerr-objektet danner standard feilstrøm for utmating av feil i C++. Cerr er en forekomst av ostream-klassen. Cerr-objektet er ubuffret. Dette betyr at den brukes når en feilmelding skal vises umiddelbart.
Siden den ikke er bufret, lagrer den ikke feilmeldinger for en senere visning. Den brukes sammen med strøminnsettingsoperatoren (<<).
Eksempel
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream header-fil der cerr-objektet er definert.
- Inkluder std-navneområdet slik at vi ikke trenger å kalle det når vi bruker klassene.
- Kalle hoved()-funksjonen. Programlogikken bør legges til i hoveddelen. Den krøllete åpningen markerer begynnelsen av funksjonens kropp.
- Bruk cerr-objektet til å skrive ut en feil på konsollen.
- Programmet må returnere en verdi ved vellykket utførelse.
- Slutten av kroppen av hovedfunksjonen.
std::tette
Clog-objektet 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 buffer til bufferen er fylt/tømt. Den brukes sammen med strøminnsettingsoperatoren (<<).
Eksempel
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkludert iostream header-filen der clog-objektet er definert.
- Inkludert std-navneområdet slik at vi kan bruke klassene uten å kalle det.
- Kaller opp hoved()-funksjonen. Programlogikken bør legges til i hoveddelen. { markerer begynnelsen av funksjonens hoveddel.
- Bruk tetteobjektet til å skrive ut en feil på standardutgangen, skjermen.
- Programmet må returnere en verdi ved vellykket gjennomføring.
- Slutten av hoveddelen av funksjonen main().
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:
- good()- returnerer sant hvis alt er i orden.
- bad()- vil returnere true hvis det oppstår en fatal feil.
- fail()- vil returnere sann etter mislykket strømoperasjon.
- eof()- vil returnere sant hvis den når slutten av en fil.
For å vite om en bestemt lese-/skriveoperasjon mislyktes, test leseresultatet.
For eksempel, for å sjekke om brukeren har skrevet inn et gyldig heltall, gjør du dette:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
Sammendrag
- Inn- og utdataoppgavene i C++ gjøres via bytesekvens. Bytene kalles strømmer.
- I en inngangsstrøm flyter bytene fra inndataenheten som et tastatur til hovedminnet.
- I en utdatastrøm går bytene fra hovedminnet til en utdataenhet som en skjerm.
- cin-objektet er en forekomst av istream-klassen. Den leser inndata fra en inndataenhet som tastaturet.
- Cout-objektet er en forekomst av ostream-klassen. Den produserer utdata på utgangsenheter som skjermen.
- cerr-objektet er en forekomst av ostream-klassen. Den viser feilobjekter på skjermen.
- Clog-objektet er en forekomst av ostream-klassen. Den viser feilmeldinger på utdataenheter.
- Clog-objektet bufferer feilmeldinger, mens cerr-objektet ikke gjør det.