C++ Grundlæggende input/output: Cout, Cin, Cerr Eksempel

⚡ Smart opsummering

C++ Input- og output-operationer er afhængige af stream-objekter, der flytter data som bytesekvenser mellem programmer og enheder, hvor cin læser tastaturinput og cout, cerr og clog skriver output til skærmen.

  • 🔘 Strømme: Input- og outputopgaver bevæger sig som bytesekvenser kaldet streams, der flytter data mellem hovedhukommelsen og enheder.
  • 📥 Headerfiler: Bibliotekerne iostream, iomanip og fstream definerer de objekter og manipulatorer, der bruges til grundlæggende input og output.
  • 🖨️ cout og cin: Cout-objektet udskriver med indsættelsesoperatoren, mens cin læser værdier med extractionsoperatør.
  • ⚠️ cerr og tilstopning: Begge rapporterer fejl, men cerr forbliver ubufferet til øjeblikkelig visning, mens clog bufferer meddelelser først.
  • 🛠️ Fejlhåndtering: God-, dårlig-, fejl- og eof-kontrollerne aflæser streamtilstand, så mislykkede operationer registreres sikkert.
  • 🤖 AI assistance: AI-kodningsassistenter som f.eks. GitHub Copilot genererer cin- og cout-standardtekster ud fra en kort kommentar eller et funktionsnavn.

C++ Grundlæggende input/output

Hvad er streams i C++?

C++ giver brugerne en række biblioteker, som de kan bruge til at udføre input/output opgaver. Disse opgaver udføres i form af byte-sekvenser, populært kaldet streams.

Vandløbene er opdelt i to:

Typer af vandløb

  • Inputstrøm: Dette er en type stream, hvor bytes flyder fra en enhed, såsom et tastatur, til hovedhukommelsen.
  • Outputstrøm: Dette er en type stream, hvor bytes flyder i den modsatte retning, det vil sige fra hovedhukommelsen og derefter til enheden, såsom skærmen.

Hvordan fungerer streams?

C++ streams fungerer som følger:

  1. Først initialiseres en stream med den rigtige type.
  2. Dernæst skal du angive, hvor I/O'en vil forekomme, ved hjælp af get/put-pointere.
  3. Når du er kommet til den rigtige placering i en strøm, kan du udføre input- og outputopgaver ved hjælp af henholdsvis >> og << operatorer.

Funktionstabel

Følgende er funktionerne i stream.h header-filen:

KlasseFunktioner
FilebufDet indstiller filbuffere til at læse/skrive. Den har funktionerne close() og open() i sig
fstreambaseDet er basisklassen for klasserne ifstream, fstream og ofstream. Dens operationer er fælles for filstrømmene.
ifstreamDet er en input-filstream-klasse til at levere input-operationer.
ofstreamDet er en output-filstream-klasse til at levere output-operationer.
fstreamDet er en input/output stream klasse. Det understøtter samtidige input/output operationer.

C++ Header-filer til input/output

C++ indeholder tre biblioteker, der kommer med funktioner til at udføre grundlæggende input/out-opgaver. De omfatter:

  • Iostream: Det er et akronym for standard input/output stream. Denne header-fil kommer med definitioner for objekter som cin/cout/cerr.
  • Iomanip: Det er et akronym for input/output manipulatorer. Biblioteket kommer med funktioner, der kan bruges til manipulation af streams. Den indeholder definitioner for objekter som setw, setprecision og andre.
  • Fstream: Dette er en header-fil til beskrivelse af filstrømmen. Den håndterer data, der læses fra fil som input, eller som er skrevet til en fil, outputtet.

Nøgleordene cin og cout er meget populære i C++. De bruges til at tage henholdsvis input og udskrivning af output. For at bruge dem skal du inkludere iostream header-fil i dit program. Årsagen er, at de er defineret i den pågældende header-fil. Undladelse af at inkludere iostream-headerfilen vil generere en fejl. Dette skyldes en fiasko af C++ compiler for at forstå betydningen af ​​søgeordene.

De vigtigste objekter defineret i iostream header-filen er cin, cout, cerr og clog. Lad os diskutere dem.

std::ud

Cout-objektet er en forekomst af iostream-klassen. Den bruges til at producere output på en standard outputenhed, som normalt er skærmen. Det bruges sammen med stream-indsættelsesoperatoren (<<).

Eksempel

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Output:

std::ud

Her er et skærmbillede af koden:

std::ud

Code Forklaring:

  1. Inkluder iostream-header-filen, hvor cout-objektet er defineret.
  2. Inkluder std-navnerummet, så vi ikke behøver at kalde det, når vi bruger dets klasser.
  3. Kald funktionen main(). Programkoden skal tilføjes i sin krop. Den åbne krøllede bøjle { markerer begyndelsen af ​​dens krop.
  4. Opret en tegnvariabel med navnet welcome til at indeholde strengen Velkommen til Guru99.
  5. Udskriv værdien af ​​strengen velkommen på konsollen. Endl er en C++ søgeord betyder slutlinje. Den flytter markøren for at begynde at udskrive tekst på næste linje.
  6. Programmet skal returnere værdi ved vellykket eksekvering.
  7. Slutningen af ​​hoveddelen af ​​funktion main().

std::cin

cin-objektet er en instans af istream-klassen. Det læser input fra inputenheden, tastaturet. Det bruges normalt sammen med extractionsoperatoren (>>). Eks.traction-objektet er ansvarlig for extracdata indtastet via tastaturet fra cin-objektet.

Eksempel

Følgende eksempel viser, hvordan man bruger nøgleordet cin i C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Output:

std::cin

Her er et skærmbillede af koden:

std::cin

Code Forklaring:

  1. Inkluder iostream-header-filen i vores program. cin-objektet er defineret i denne header-fil.
  2. Inkluder std-navneområdet for at bruge dets klasser. Du behøver ikke at ringe til std, når du bruger dens klasser.
  3. Kald funktionen main(). Programkoden skal tilføjes i sin krop.
  4. Starten af ​​programmets brødtekst.
  5. Erklære en heltalsvariabel navngivne nummer.
  6. Udskriv en meddelelse på skærmen, der beder brugeren om at indtaste et nummer.
  7. Læs den værdi, som brugeren har indtastet på konsollen, fra tastaturet.
  8. Udskriv værdien læst ovenfor på konsollen sammen med anden tekst.
  9. Programmet bør returnere en værdi, hvis det udføres med succes.
  10. Slutningen af ​​kroppen af ​​hovedfunktionen.

std::cerr

Cerr-objektet danner standardfejlstrømmen til udlæsning af fejl i C++. Cerr er en forekomst af ostream-klassen. Cerr-objektet er ubufferet. Det betyder, at den bruges, når en fejlmeddelelse skal vises med det samme.

Da den ikke er bufret, gemmer den ikke fejlmeddelelser til senere visning. Det bruges sammen med stream-indsættelsesoperatoren (<<).

Eksempel

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Output:

std::cerr

Her er et skærmbillede af koden:

std::cerr

Code Forklaring:

  1. Inkluder iostream header-fil, hvor cerr-objektet er blevet defineret.
  2. Inkluder std-navnerummet, så vi ikke behøver at kalde det, når vi bruger dets klasser.
  3. Kald funktionen main(). Programlogikken skal tilføjes i dens krop. Den åbne krøllede bøjle markerer begyndelsen af ​​funktionens krop.
  4. Brug cerr-objektet til at udskrive en fejl på konsollen.
  5. Programmet skal returnere en værdi ved vellykket eksekvering.
  6. Slutningen af ​​kroppen af ​​hovedfunktionen.

std::clog

Clog-objektet er en forekomst af ostream-klassen. Det bruges til at vise fejl på standarddisplayet, monitoren. Det ligner cerr-objektet, men det er bufferet. Da den er bufferet, gemmer den fejlmeddelelsen i buffer, indtil bufferen er fyldt/tømt. Den bruges sammen med stream-indsættelsesoperatoren (<<).

Eksempel

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Output:

std::clog

Her er et skærmbillede af koden:

std::clog

Code Forklaring:

  1. Inklusive iostream header-filen, hvori clog-objektet er defineret.
  2. Herunder std-navnerummet, så vi kan bruge dets klasser uden at kalde det.
  3. Kalder hoved()-funktionen. Programlogikken skal tilføjes i dens krop. { markerer begyndelsen af ​​funktionens krop.
  4. Brug tilstopningsobjektet til at udskrive en fejl på standardoutputtet, monitoren.
  5. Programmet skal returnere en værdi efter vellykket afslutning.
  6. Slutningen af ​​kroppen af ​​funktion main().

Fejlhåndtering med IO-streams

De samme streamobjekter rapporterer også, om en handling lykkedes, hvilket streamtilstandskontroller afslører.

For at kontrollere, om en stream er gyldig eller ej, kan du bruge den som en boolesk.

Her er et eksempel:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

For at få flere detaljer om streamstatus kan du bruge disse funktioner:

  • good()- returnerer sandt, hvis alt er i orden.
  • bad()- vil returnere sand, hvis der opstår en fatal fejl.
  • fail()- returnerer sand efter mislykket stream-operation.
  • eof()- vil returnere sand, hvis den når slutningen af ​​en fil.

For at vide, om en bestemt læse-/skrivehandling mislykkedes, skal du teste læseresultatet.

For at kontrollere, om brugeren har indtastet et gyldigt heltal, skal du gøre dette:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

Ofte Stillede Spørgsmål

Cout-objektet er typesikkert og bruger indsættelsesoperatoren, så det registrerer hver værdis type automatisk. C's printf er afhængig af formatspecifikationer som %d, der skal matche argumenterne manuelt.

Eksmandentraction-operatoren stopper ved det første mellemrum, så cin læser kun ét ord. For at registrere en hel linje med mellemrum, kald getline(cin, variabel), som læser op til linjeskifttegnet.

Begge starter en ny linje, men endl tømmer også outputbufferen hver gang, hvilket kan forsinke travle løkker. Foretræk en almindelig ny linje og reserver endl til når bufferen skal tømmes med det samme.

Objekterne cin, cout, cerr og clog findes i navnerummet std. Skrivning ved hjælp af navnerummet std giver dig mulighed for at skrive cout i stedet for std::cout. Store projekter beholder ofte det eksplicitte std-præfiks for at undgå kollisioner.

Inkluder iomanip-headeren og brug manipulatorer med cout. setw-manipulatoren reserverer en feltbredde, og setprecision angiver, hvor mange cifre der vises, og formaterer tal og kolonner uden at ændre de gemte værdier.

Ja. Fordi cout og cerr er separate strømme, kan en shell omdirigere normalt output til en fil, mens fejl stadig når skærmen. I kode kan rdbuf pege en strøm mod en anden buffer.

Ja. AI-kodningsassistenter læser en kommentar eller et funktionsnavn og producerer cin- og cout-sætninger, plus iostream-include og en formateret prompt. RevDet er fortsat klogt at se den genererede strømlogik for kanttilfælde.

Ja. GitHub Copilot fuldfører cout-formatering, cin-valideringsløkker og cerr-fejlkontroller, mens du skriver. Det er 2026. C++ Kodeintelligens tilføjer semantisk symbolbevidsthed, så forslag til flere filer forbliver konsistente.

Opsummer dette indlæg med: