C++ Grunnleggende input/output: Cout, Cin, Cerr Eksempel

⚡ Smart oppsummering

C++ Input- og output-operasjoner er avhengige av strømobjekter som flytter data som bytesekvenser mellom programmer og enheter, med cin som leser tastaturinndata og cout, cerr og clog som skriver utdata til skjermen.

  • 🔘 Strømmer: Inndata- og utdataoppgaver beveger seg som bytesekvenser kalt strømmer, og flytter data mellom hovedminnet og enheter.
  • 📥 Topptekstfiler: Bibliotekene iostream, iomanip og fstream definerer objektene og manipulatorene som brukes for grunnleggende input og output.
  • 🖨️ cout og cin: Cout-objektet skriver ut med innsettingsoperatoren, mens cin leser verdier med ex.tracsjonsoperatør.
  • ⚠️ cerr og tette: Begge rapporterer feil, men cerr forblir ubufret for umiddelbar visning mens clog bufrer meldinger først.
  • 🛠️ Feilhåndtering: Kontrollene «good», «bad», «fail» og «eof» leser strømtilstanden, slik at mislykkede operasjoner fanges opp på en sikker måte.
  • 🤖 AI-hjelp: AI-kodingsassistenter som GitHub Copilot genererer cin- og cout-standardtekster fra en kort kommentar eller et funksjonsnavn.

C++ Grunnleggende inndata og utdata

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:

  1. Først initialiseres en strøm med riktig type.
  2. Deretter bør du angi hvor I/O-en vil skje ved hjelp av get/put-pekere.
  3. 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:

KlasseFunksjoner
FilebufDen setter filbuffere for å lese/skrive. Den har close() og open() funksjoner i seg
fstreambaseDet er basisklassen for klassene ifstream, fstream og ofstream. Dens operasjoner er felles for filstrømmene.
ifstreamDet er en inndatafilstrømklasse for å gi inndataoperasjoner.
av strømmenDet er en utdatafilstrømklasse for å gi utdataoperasjoner.
fstreamDet 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:

std::cout

Her er et skjermbilde av koden:

std::cout

Code Forklaring:

  1. Inkluder iostream-header-filen der cout-objektet er definert.
  2. Inkluder std-navneområdet slik at vi ikke trenger å kalle det når vi bruker klassene.
  3. Kalle hoved()-funksjonen. Programkoden skal legges til i hoveddelen. Den krøllete åpningen { markerer begynnelsen av kroppen.
  4. Opprett en tegnvariabel med navnet welcome for å holde strengen Velkommen til Guru99.
  5. 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.
  6. Programmet må returnere verdi ved vellykket utførelse.
  7. Slutten av hoveddelen av funksjonen main().

std::cin

cin-objektet er en instans av istream-klassen. Det leser input fra inndataenheten, tastaturet. Det brukes vanligvis sammen med ex.tracsjonsoperatoren (>>). Eks.tracsjonsobjektet er ansvarlig for ekstracdata som er skrevet 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:

std::cin

Her er et skjermbilde av koden:

std::cin

Code Forklaring:

  1. Inkluder iostream-headerfilen i programmet vårt. cin-objektet er definert i denne overskriftsfilen.
  2. Inkluder std-navneområdet for å bruke klassene. Du trenger ikke å ringe std når du bruker klassene.
  3. Kalle hoved()-funksjonen. Programkoden skal legges til i hoveddelen.
  4. Starten på hoveddelen av programmet.
  5. Erklære en heltallsvariabel navngitt nummer.
  6. Skriv ut en melding på skjermen som ber brukeren om å angi et nummer.
  7. Les verdien angitt av brukeren på konsollen fra tastaturet.
  8. Skriv ut verdien som er lest ovenfor på konsollen sammen med annen tekst.
  9. Programmet skal returnere en verdi hvis det kjøres vellykket.
  10. 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:

std::cerr

Her er et skjermbilde av koden:

std::cerr

Code Forklaring:

  1. Inkluder iostream header-fil der cerr-objektet er definert.
  2. Inkluder std-navneområdet slik at vi ikke trenger å kalle det når vi bruker klassene.
  3. Kalle hoved()-funksjonen. Programlogikken bør legges til i hoveddelen. Den krøllete åpningen markerer begynnelsen av funksjonens kropp.
  4. Bruk cerr-objektet til å skrive ut en feil på konsollen.
  5. Programmet må returnere en verdi ved vellykket utførelse.
  6. 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:

std::tette

Her er et skjermbilde av koden:

std::tette

Code Forklaring:

  1. Inkludert iostream header-filen der clog-objektet er definert.
  2. Inkludert std-navneområdet slik at vi kan bruke klassene uten å kalle det.
  3. Kaller opp hoved()-funksjonen. Programlogikken bør legges til i hoveddelen. { markerer begynnelsen av funksjonens hoveddel.
  4. Bruk tetteobjektet til å skrive ut en feil på standardutgangen, skjermen.
  5. Programmet må returnere en verdi ved vellykket gjennomføring.
  6. Slutten av hoveddelen av funksjonen main().

Feilhåndtering med IO-strømmer

De samme strømobjektene rapporterer også om en operasjon var vellykket, noe strømtilstandssjekker avslører.

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;
}

Spørsmål og svar

cout-objektet er typesikkert og bruker innsettingsoperatoren, slik at det automatisk oppdager hver verdis type. Cs printf er avhengig av formatspesifikatorer som %d som må samsvare med argumentene manuelt.

Eksentraction-operatoren stopper ved det første mellomrommet, slik at cin bare leser ett ord. For å fange en hel linje med mellomrom, kall getline(cin, variabel), som leser opp til linjeskifttegnet.

Begge starter en ny linje, men endl tømmer også utdatabufferen hver gang, noe som kan gjøre travle løkker tregere. Foretrekk en ren ny linje og reserver endl for når bufferen må tømmes umiddelbart.

Objektene cin, cout, cerr og clog ligger i navnerommet std. Skriving med navnerommet std lar deg skrive cout i stedet for std::cout. Store prosjekter beholder ofte det eksplisitte std-prefikset for å unngå kollisjoner.

Inkluder iomanip-headeren og bruk manipulatorer med cout. setw-manipulatoren reserverer en feltbredde, og setprecision angir hvor mange sifre som vises, og formaterer tall og kolonner uten å endre de lagrede verdiene.

Ja. Fordi cout og cerr er separate strømmer, kan et skall omdirigere normal utdata til en fil mens feil fortsatt når skjermen. I kode kan rdbuf peke en strøm mot en annen buffer.

Ja. AI-kodingsassistenter leser en kommentar eller et funksjonsnavn og produserer cin- og cout-setninger, pluss iostream include og en formatert ledetekst. RevÅ se den genererte strømlogikken for kanttilfeller forblir klokt.

Ja. GitHub Copilot fullfører cout-formatering, cin-valideringsløkker og cerr-feilkontroller mens du skriver. Det er 2026. C++ Kodeintelligens legger til semantisk symbolbevissthet, slik at forslag til flere filer forblir konsistente.

Oppsummer dette innlegget med: