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

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 vil ske ved hjælp af get/put pointers.
  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:

Klasse Funktioner
Filebuf Det indstiller filbuffere til at læse/skrive. Den har funktionerne close() og open() i sig
fstreambase Det er basisklassen for klasserne ifstream, fstream og ofstream. Dens operationer er fælles for filstrømmene.
ifstream Det er en input-filstream-klasse til at levere input-operationer.
ofstream Det er en output-filstream-klasse til at levere output-operationer.
fstream Det 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

Kodeforklaring:

  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 ved navn velkommen for at holde 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 forekomst af istream-klassen. Den læser input fra inputenheden, tastaturet. Det bruges normalt sammen med ekstraktionsoperatøren (>>). Udtræksobjektet er ansvarlig for at udtrække data, der indtastes 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

Kodeforklaring:

  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

Kodeforklaring:

  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

Kodeforklaring:

  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

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

Resumé

  • Input- og outputopgaverne i C++ udføres via bytesekvens. Bytene kaldes streams.
  • I en inputstrøm flyder bytes fra inputenheden som et tastatur til hovedhukommelsen.
  • I en outputstrøm, bytes fra hovedhukommelsen derefter til en outputenhed som en skærm.
  • cin-objektet er en forekomst af istream-klassen. Den læser input fra en inputenhed som f.eks. tastaturet.
  • Cout-objektet er en forekomst af ostream-klassen. Det producerer output på outputenheder som f.eks. skærmen.
  • cerr-objektet er en forekomst af ostream-klassen. Den viser fejlobjekter på skærmen.
  • Clog-objektet er en instans af ostream-klassen. Det viser fejlmeddelelser på outputenheder.
  • Clog-objektet bufferer fejlmeddelelser, hvorimod cerr-objektet ikke gør.