C ++ Basic Input / Output: Cout, Cin, Cerr Voorbeeld

Inhoudsopgave:

Anonim

Wat zijn streams in C ++?

C ++ biedt gebruikers een aantal bibliotheken die ze kunnen gebruiken om invoer- / uitvoertaken uit te voeren. Deze taken worden uitgevoerd in de vorm van byte-reeksen, in de volksmond streams genoemd.

De streams zijn onderverdeeld in twee:

Soorten streams

  • Invoerstroom: dit is een type stroom waarbij de bytes van een apparaat zoals een toetsenbord naar het hoofdgeheugen stromen.
  • Uitgangsstroom: dit is een type stream waarbij de bytes in de tegenovergestelde richting stromen, dat wil zeggen van het hoofdgeheugen naar het apparaat zoals het weergavescherm.

In deze C ++ tutorial leer je:

  • Wat zijn streams in C ++?
  • Hoe werken streams?
  • Functietabel
  • C ++ Header-bestanden voor invoer / uitvoer
  • std :: cout
  • std :: cin
  • std :: cerr
  • std :: verstoppen
  • Foutafhandeling met IO-streams:

Hoe werken streams?

C ++ streams werken als volgt:

  1. Eerst wordt een stream geïnitialiseerd met het juiste type.
  2. Vervolgens moet u aangeven waar de I / O zal plaatsvinden met behulp van get / put-pointers.
  3. Nadat u op de juiste locatie in een stream bent aangekomen, kunt u invoer- en uitvoertaken uitvoeren met respectievelijk de operators >> en <<.

Functietabel

Hieronder volgen de functies die worden geboden in het stream.h-headerbestand:

Klasse Functies
Filebuf Het stelt bestandsbuffers in om te lezen / schrijven. Het heeft de functies close () en open ()
fstreambase Het is de basisklasse voor de klassen ifstream, fstream en ofstream. De bewerkingen zijn gemeenschappelijk voor de bestandsstromen.
ifstream Het is een stroomklasse voor invoerbestanden voor het leveren van invoerbewerkingen.
ofstream Het is een streamklasse van het uitvoerbestand voor het leveren van uitvoerbewerkingen.
fstream Het is een input / output-streamklasse. Het ondersteunt gelijktijdige invoer / uitvoerbewerkingen.

C ++ Header-bestanden voor invoer / uitvoer

C ++ biedt drie bibliotheken met functies voor het uitvoeren van basisinvoer / uit-taken. Ze bevatten:

  • Iostream: het is een afkorting voor standard input / output stream. Dit header-bestand wordt geleverd met definities voor objecten zoals cin / cout / cerr.
  • Iomanip: het is een afkorting voor input / output-manipulatoren. De bibliotheek wordt geleverd met functies die kunnen worden gebruikt voor het manipuleren van streams. Het bevat definities voor objecten zoals setw, setprecision en andere.
  • Fstream: Dit is een header-bestand om de bestandsstroom te beschrijven. Het behandelt gegevens die als invoer uit een bestand worden gelezen of die naar een bestand, de uitvoer, worden geschreven.

De trefwoorden cin en cout zijn erg populair in C ++. Ze worden gebruikt voor het opnemen van respectievelijk invoer en afdrukuitvoer. Om ze te gebruiken, moet u het iostream-headerbestand in uw programma opnemen. De reden is dat ze zijn gedefinieerd in dat header-bestand. Als u het iostream-headerbestand niet toevoegt, wordt er een fout gegenereerd. Dit is het gevolg van een fout van de C ++ - compiler om de betekenis van de trefwoorden te begrijpen.

De belangrijkste objecten die in het iostream-headerbestand zijn gedefinieerd, zijn cin, cout, cerr en clog. Laten we ze bespreken.

std :: cout

Het cout-object is een instantie van de iostream-klasse. Het wordt gebruikt voor het produceren van uitvoer op een standaard uitvoerapparaat, dat normaal gesproken het scherm is. Het wordt samen met de operator voor het invoegen van streams (<<) gebruikt.

Voorbeeld:

#include using namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Voeg het iostream-headerbestand toe waarin het cout-object is gedefinieerd.
  2. Neem de std-naamruimte op, zodat we deze niet hoeven aan te roepen bij het gebruik van de klassen.
  3. Roep de functie main () aan. De programmacode moet in de hoofdtekst worden toegevoegd. De openende accolade {markeert het begin van zijn lichaam.
  4. Maak een tekenvariabele met de naam welcome om de tekenreeks Welcome to Guru99 te bevatten.
  5. Druk de waarde van de tekenreeks welcome op de console af. De endl is een C ++ -zoekwoord dat eindregel betekent. Het verplaatst de cursor om te beginnen met het afdrukken van tekst op de volgende regel.
  6. Het programma moet waarde retourneren bij succesvolle uitvoering.
  7. Einde van de hoofdtekst van de functie ().

std :: cin

Het cin-object is een instantie van de klasse istream. Het leest invoer van het invoerapparaat, het toetsenbord. Het wordt normaal gesproken samen met de extractie-operator (>>) gebruikt. Het extractieobject is verantwoordelijk voor het extraheren van gegevens die via het toetsenbord zijn ingevoerd uit het cin-object.

Voorbeeld:

Het volgende voorbeeld laat zien hoe u het cin-trefwoord in C ++ kunt gebruiken:

#include using namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Voeg het iostream-headerbestand toe aan ons programma. Het cin-object wordt gedefinieerd in dit headerbestand.
  2. Voeg de std-naamruimte toe om de klassen ervan te gebruiken. U hoeft std niet aan te roepen als u de klassen ervan gebruikt.
  3. Roep de functie main () aan. De programmacode moet in de hoofdtekst worden toegevoegd.
  4. De start van de body van het programma.
  5. Declareer een integer-variabele met de naam number.
  6. Druk een bericht op het scherm af waarin de gebruiker wordt gevraagd een nummer in te voeren.
  7. Lees de waarde die de gebruiker op de console heeft ingevoerd vanaf het toetsenbord.
  8. Druk de bovenstaande waarde af op de console naast andere tekst.
  9. Het programma moet een waarde retourneren als het met succes wordt uitgevoerd.
  10. Einde van het hoofdgedeelte van de hoofdfunctie.

std :: cerr

Het cerr-object vormt de standaardfoutstroom voor het uitvoeren van fouten in C ++. Cerr is een instantie van de ostream-klasse. Het cerr-object is niet gebufferd. Dit betekent dat het wordt gebruikt wanneer een foutmelding onmiddellijk moet worden weergegeven.

Omdat het ongebufferd is, wordt er geen foutbericht opgeslagen voor een latere weergave. Het wordt samen met de operator voor het invoegen van streams (<<) gebruikt.

Voorbeeld:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Voeg het iostream-headerbestand toe waarin het cerr-object is gedefinieerd.
  2. Neem de std-naamruimte op, zodat we deze niet hoeven aan te roepen bij het gebruik van de klassen.
  3. Roep de functie main () aan. De programmalogica moet in zijn lichaam worden toegevoegd. De openende accolade markeert het begin van het lichaam van de functie.
  4. Gebruik het cerr-object om een ​​fout op de console af te drukken.
  5. Het programma moet een waarde retourneren bij een succesvolle uitvoering.
  6. Einde van het hoofdgedeelte van de hoofdfunctie.

std :: verstoppen

Het clog-object is een instantie van de klasse ostream. Het wordt gebruikt om fouten op het standaarddisplay, de monitor, weer te geven. Het lijkt op het cerr-object, maar het is gebufferd. Omdat het gebufferd is, wordt het foutbericht in de buffer opgeslagen totdat de buffer is gevuld / leeggemaakt. Het wordt samen met de operator voor het invoegen van streams (<<) gebruikt.

Voorbeeld:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Inclusief het iostream-headerbestand waarin het clog-object is gedefinieerd.
  2. Inclusief de std-naamruimte zodat we de klassen ervan kunnen gebruiken zonder deze aan te roepen.
  3. De functie main () aanroepen. De programmalogica moet in zijn lichaam worden toegevoegd. De {markeert het begin van de hoofdtekst van de functie.
  4. Gebruik het klompobject om een ​​fout af te drukken op de standaarduitvoer, de monitor.
  5. Het programma moet een waarde retourneren bij succesvolle voltooiing.
  6. Het einde van het hoofdgedeelte van de functie ().

Foutafhandeling met IO-streams:

Om te controleren of een stream geldig is of niet, kunt u deze als Boolean gebruiken.

Hier is een voorbeeld:

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

Om meer details over de streamstatus te krijgen, kunt u deze functies gebruiken:

  • good () - zal true retourneren als alles in orde is.
  • bad () - retourneert true als er een fatale fout optreedt.
  • fail () - retourneert true na een mislukte streambewerking.
  • eof () - zal true retourneren als het het einde van een bestand bereikt.

Test het leesresultaat om te weten of een bepaalde lees- / schrijfbewerking is mislukt.

Om bijvoorbeeld te controleren of de gebruiker een geldig geheel getal heeft ingevoerd, gaat u als volgt te werk:

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

Overzicht

  • De invoer- en uitvoertaken in C ++ worden gedaan via byte-volgorde. De bytes worden streams genoemd.
  • In een invoerstroom stromen de bytes van het invoerapparaat als een toetsenbord naar het hoofdgeheugen.
  • In een outputstroom gaan de bytes van het hoofdgeheugen vervolgens naar een outputapparaat zoals een monitor.
  • Het cin-object is een instantie van de klasse istream. Het leest invoer van een invoerapparaat zoals het toetsenbord.
  • Het cout-object is een instantie van de klasse ostream. Het produceert uitvoer op uitvoerapparaten zoals de monitor.
  • Het cerr-object is een instantie van de klasse ostream. Het toont foutobjecten op de monitor.
  • Het clog-object is een instantie van de klasse ostream. Het geeft foutmeldingen weer op uitvoerapparaten.
  • Het clog-object buffert foutmeldingen, terwijl het cerr-object dat niet doet.