C++ Grundläggande ingång/utgång: Cout, Cin, Cerr Exempel
Vad finns Streams i C++?
C++ ger användarna ett antal bibliotek som de kan använda för att utföra inmatnings-/utmatningsuppgifter. Dessa uppgifter görs i form av bytesekvenser, populärt kallade strömmar.
Strömmarna är uppdelade i två:
Typer av strömmar
- Indataström: Detta är en typ av ström där byten flödar från en enhet som ett tangentbord till huvudminnet.
- Utdataström: Detta är en typ av ström där byten flödar i motsatt riktning, det vill säga från huvudminnet och sedan till enheten som bildskärmen.
Hur fungerar streams?
C++ strömmar fungerar enligt följande:
- Först initieras en ström med rätt typ.
- Därefter bör du ange var I / O kommer att ske med get/put-pekare.
- Efter att ha kommit till rätt plats i en ström kan du utföra inmatnings- och utdatauppgifter med operatorerna >> respektive <<.
Funktionstabell
Följande är funktionerna i stream.h-huvudfilen:
Klass | Funktioner |
---|---|
Filebuf | Den ställer in filbuffertar för att läsa/skriva. Den har funktionerna close() och open() i sig |
fstreambase | Det är basklassen för klasserna ifstream, fstream och ofstream. Dess funktioner är gemensamma för filströmmarna. |
ifstream | Det är en indatafilströmsklass för att tillhandahålla inmatningsoperationer. |
ofstream | Det är en utdatafilströmsklass för att tillhandahålla utdataoperationer. |
fstream | Det är en in-/utgångsströmklass. Den stöder samtidiga in-/utgångsoperationer. |
C++ Rubrikfiler för in-/utgång
C++ tillhandahåller tre bibliotek som kommer med funktioner för att utföra grundläggande in-/utuppgifter. De inkluderar:
- Iostream: Det är en akronym för standard input/output stream. Denna rubrikfil kommer med definitioner för objekt som cin/cout/cerr.
- Iomanip: Det är en akronym för input/output manipulatorer. Biblioteket kommer med funktioner som kan användas för att manipulera strömmar. Den innehåller definitioner för objekt som setw, setprecision och andra.
- Fstream: Detta är en rubrikfil för att beskriva filströmmen. Den hanterar data som läses från fil som indata eller som skrivs till en fil, output.
Nyckelorden cin och cout är mycket populära i C++. De används för att ta indata respektive utskrifter. För att använda dem måste du inkludera iostream-huvudfilen i ditt program. Anledningen är att de är definierade i den rubrikfilen. Underlåtenhet att inkludera iostream-huvudfilen kommer att generera ett fel. Detta beror på ett misslyckande av C++ kompilator för att förstå innebörden av sökorden.
Huvudobjekten som definieras i iostream-huvudfilen är cin, cout, cerr och clog. Låt oss diskutera dem.
std::ut
Cout-objektet är en instans av iostream-klassen. Den används för att producera utdata på en standardutgångsenhet, som normalt är skärmen. Den används tillsammans med ströminsättningsoperatorn (<<).
Exempelvis
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-huvudfilen där cout-objektet är definierat.
- Inkludera std-namnområdet så att vi inte behöver kalla det när vi använder dess klasser.
- Anropa main()-funktionen. Programkoden ska läggas till i dess kropp. Det öppningsbara locket { markerar början av dess kropp.
- Skapa en teckenvariabel med namnet Welcome för att hålla strängen Welcome to Guru99.
- Skriv ut värdet på välkomststrängen på konsolen. Slutet är en C++ nyckelord som betyder slutrad. Den flyttar markören för att börja skriva ut text på nästa rad.
- Programmet måste returnera värde vid framgångsrikt genomförande.
- Slutet på huvuddelen av funktion main().
std::cin
cin-objektet är en instans av istream-klassen. Den läser indata från inmatningsenheten, tangentbordet. Den används normalt tillsammans med extraktionsoperatören (>>). Extraktionsobjektet ansvarar för att extrahera data som matats in via tangentbordet från cin-objektet.
Exempelvis
Följande exempel visar hur man använder nyckelordet cin i C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-huvudfilen i vårt program. cin-objektet definieras i denna rubrikfil.
- Inkludera std-namnområdet för att använda dess klasser. Du behöver inte anropa std när du använder dess klasser.
- Anropa main()-funktionen. Programkoden ska läggas till i dess kropp.
- Början av programmets brödtext.
- Förklara en heltalsvariabel namngett nummer.
- Skriv ut ett meddelande på skärmen som uppmanar användaren att ange ett nummer.
- Läs värdet som användaren angett på konsolen från tangentbordet.
- Skriv ut värdet ovan på konsolen tillsammans med annan text.
- Programmet bör returnera ett värde om det körs framgångsrikt.
- Slutet av kroppen av huvudfunktionen.
std::cerr
cerr-objektet bildar standardfelströmmen för att mata ut fel i C++. Cerr är en instans av klassen ostream. Cerr-objektet är obuffrat. Det betyder att den används när ett felmeddelande ska visas omedelbart.
Eftersom den är obuffrad lagrar den inte felmeddelanden för en senare visning. Den används tillsammans med ströminsättningsoperatorn (<<).
Exempelvis
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream header-fil där cerr-objektet har definierats.
- Inkludera std-namnområdet så att vi inte behöver kalla det när vi använder dess klasser.
- Anropa main()-funktionen. Programlogiken bör läggas till i dess kropp. Det öppningsbara locket markerar början av funktionens kropp.
- Använd cerr-objektet för att skriva ut ett fel på konsolen.
- Programmet måste returnera ett värde vid framgångsrikt genomförande.
- Slutet av kroppen av huvudfunktionen.
std::täppa
Clog-objektet är en instans av klassen ostream. Den används för att visa fel på standardskärmen, monitorn. Det liknar cerr-objektet, men det är buffrat. Eftersom den är buffrad, lagrar den felmeddelandet i bufferten tills bufferten är fylld/tömd. Den används tillsammans med ströminsättningsoperatorn (<<).
Exempelvis
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inklusive iostream-huvudfilen där clog-objektet är definierat.
- Inklusive std-namnområdet så att vi kan använda dess klasser utan att anropa det.
- Anropar funktionen main(). Programlogiken bör läggas till i dess kropp. { markerar början av funktionens kropp.
- Använd tilltäppningsobjektet för att skriva ut ett fel på standardutgången, monitorn.
- Programmet måste returnera ett värde efter framgångsrikt slutförande.
- Slutet på huvuddelen av funktion main().
Felhantering med IO-strömmar
För att kontrollera om en stream är giltig eller inte, kan du använda den som en boolesk.
Här är ett exempel:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
För att få mer information om strömningsstatus kan du använda dessa funktioner:
- good()- kommer att returnera sant om allt är okej.
- bad()- returnerar true om ett allvarligt fel inträffar.
- fail()- kommer att returnera true efter misslyckad streamoperation.
- eof()- returnerar true om den når slutet av en fil.
För att veta om en viss läs-/skrivoperation misslyckades, testa läsresultatet.
Till exempel, för att kontrollera om användaren har angett ett giltigt heltal, gör så här:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
Sammanfattning
- In- och utdatauppgifterna i C++ görs via bytesekvens. Byten kallas strömmar.
- I en ingångsström flyter byten från inmatningsenheten som ett tangentbord till huvudminnet.
- I en utström, byten från huvudminnet sedan till en utenhet som en monitor.
- cin-objektet är en instans av klassen istream. Den läser indata från en inmatningsenhet som tangentbordet.
- Cout-objektet är en instans av klassen ostream. Den producerar utdata på utenheter som monitorn.
- cerr-objektet är en instans av klassen ostream. Den visar felobjekt på monitorn.
- Clog-objektet är en instans av klassen ostream. Den visar felmeddelanden på utenheter.
- Clog-objektet buffrar felmeddelanden, medan cerr-objektet inte gör det.