Vad är strömmar i C ++?
C ++ ger användare ett antal bibliotek som de kan använda för att utföra input / output-uppgifter. Dessa uppgifter görs i form av bytesekvenser, populärt kallade strömmar.
Strömmarna är uppdelade i två:
Typer av strömmar
- Ingångsström: Detta är en typ av ström där byten flödar från en enhet som ett tangentbord till huvudminnet.
- Utgångsström: Detta är en typ av ström där byten flyter i motsatt riktning, det vill säga från huvudminnet och sedan till enheten, såsom skärm.
I denna C ++ -handledning lär du dig:
- Vad är strömmar i C ++?
- Hur fungerar strömmar?
- Funktionstabell
- C ++ rubrikfiler för Input / Output
- std :: cout
- std :: cin
- std :: cerr
- std :: täppa till
- Felhantering med IO-strömmar:
Hur fungerar strömmar?
C ++ -strömmar fungerar enligt följande:
- Först initialiseras en ström med rätt typ.
- Därefter ska du ange var I / O kommer att ske med hjälp av get / put-pekare.
- Efter att ha kommit till rätt plats i en ström kan du utföra in- och utmatningsuppgifter med hjälp av >> respektive << operatörer.
Funktionstabell
Följande är de funktioner som tillhandahålls i stream.h-rubrikfilen:
Klass | Funktioner |
Filebuf | Det ställer in filbuffertar för att läsa / skriva. Den har nära () och öppna () funktioner i den |
fstreambase | Det är basklassen för klasserna ifstream, fstream och ofstream. Dess funktioner är vanliga för filströmmarna. |
ifstream | Det är en ingångsfilströmsklass för att tillhandahålla ingångsoperationer. |
ofstream | Det är en strömklass för utdatafiler för att tillhandahålla utmatningsoperationer. |
fstream | Det är en klass för ingång / utgång. Den stöder samtidig ingång / utgång. |
C ++ rubrikfiler för Input / Output
C ++ tillhandahåller tre bibliotek som har funktioner för att utföra grundläggande in / ut-uppgifter. De inkluderar:
- Iostream: Det är en förkortning för standard in / ut-ström. Denna rubrikfil kommer med definitioner för objekt som cin / cout / cerr.
- Iomanip: Det är en förkortning för input / output manipulatorer. Biblioteket levereras med funktioner som kan användas för manipulation av 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 filen som inmatning eller som skrivs till en fil, utdata.
Nyckelorden cin och cout är mycket populära i C ++. De används för att ta inmatningar respektive skriva ut. För att kunna använda dem måste du inkludera iostream header-fil i programmet. Anledningen är att de definieras i den rubrikfilen. Om iostream-rubrikfilen inte inkluderas genereras ett fel. Detta beror på att C ++ - kompilatorn inte förstår betydelsen av nyckelorden.
De viktigaste objekten som definieras i iostream-rubrikfilen är cin, cout, cerr och clog. Låt oss diskutera dem.
std :: cout
Cout-objektet är en instans av iostream-klassen. Den används för att producera utdata på en standardutmatningsenhet, som normalt är skärmen. Den används tillsammans med ströminföringsoperatören (<<).
Exempel:
#includeusing 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-rubrikfilen där cout-objektet är definierat.
- Inkludera std-namnområdet så att vi inte behöver ringa det när vi använder klasserna.
- Ring huvudfunktionen (). Programkoden ska läggas till i sin kropp. Den öppnande lockiga stag {markerar början på sin kropp.
- Skapa en teckenvariabel med namnet välkommen för att hålla strängen Välkommen till Guru99.
- Skriv ut värdet på strängen välkommen på konsolen. Endl är ett 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 efter genomförd körning.
- Slutet på funktionen huvud huvud ().
std :: cin
Cin-objektet är en instans av istream-klassen. Den läser inmatning 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.
Exempel:
Följande exempel visar hur man använder cin-nyckelordet i C ++:
#includeusing 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-rubrikfilen i vårt program. Cin-objektet definieras i den här rubrikfilen.
- Inkludera std namnområdet för att använda dess klasser. Du behöver inte ringa std när du använder dess klasser.
- Ring huvudfunktionen (). Programkoden ska läggas till i sin kropp.
- Början av programmets kropp.
- Deklarera en heltalsvariabel med namnet nummer.
- Skriv ut ett meddelande på skärmen där du uppmanas att ange ett nummer.
- Läs det värde som användaren angett på konsolen från tangentbordet.
- Skriv ut värdet som lästs ovan på konsolen tillsammans med annan text.
- Programmet ska returnera ett värde om det körs framgångsrikt.
- Slutet på huvudfunktionens kropp.
std :: cerr
Cerr-objektet utgör standardfelströmmen för utmatningsfel i C ++. Cerr är en förekomst av ostreamklassen. Cerr-objektet är obuffert. 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öminföringsoperatören (<<).
Exempel:
#includeusing 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 cer-objektet har definierats.
- Inkludera std-namnområdet så att vi inte behöver ringa det när vi använder klasserna.
- Ring huvudfunktionen (). Programmets logik bör läggas till i sin kropp. Den öppnande lockiga stag markerar början på funktionens kropp.
- Använd cerr-objektet för att skriva ut ett fel på konsolen.
- Programmet måste returnera ett värde när det har genomförts.
- Slutet på huvudfunktionens kropp.
std :: täppa till
Täppobjektet är en instans av ostream-klassen. Den används för att visa fel på standardskärmen, monitorn. Det liknar cerr-objektet, men det är buffrat. Eftersom den är buffrad lagras felmeddelandet i buffert tills bufferten fylls / spolas. Den används tillsammans med ströminföringsoperatören (<<).
Exempel:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inklusive iostream-rubrikfilen där igensättningsobjektet är definierat.
- Inklusive std-namnområdet så att vi kan använda dess klasser utan att kalla det.
- Ringer till huvudfunktionen (). Programmets logik bör läggas till i sin kropp. {Markerar början på funktionens kropp.
- Använd igensättningsobjektet för att skriva ut ett fel på standardutgången, monitorn.
- Programmet måste returnera ett värde när det är klart.
- Slutet på funktionen huvudfunktion ().
Felhantering med IO-strömmar:
För att kontrollera om en ström är giltig eller inte kan du använda den som en boolean.
Här är ett exempel:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
För att få mer information om strömstatusen kan du använda dessa funktioner:
- bra () - kommer att bli sant om allt är okej.
- dåligt () - återgår till sant om ett allvarligt fel uppstår.
- fail () - returnerar true efter misslyckad strömoperation.
- 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.
För att till exempel kontrollera om användaren angav ett giltigt heltal, gör detta:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Sammanfattning
- Ingångs- och utmatningsuppgifterna 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 utgångsström går byten från huvudminnet till en utdataenhet som en bildskärm.
- Cin-objektet är en instans av istream-klassen. Den läser inmatning från en inmatningsenhet som tangentbordet.
- Cout-objektet är en instans av ostream-klassen. Det producerar utdata på utdataenheter som bildskärmen.
- Cerr-objektet är en instans av ostream-klassen. Det visar felobjekt på monitorn.
- Täppobjektet är instans av ostream-klassen. Den visar felmeddelanden på utdataenheter.
- Täppobjektet buffrar felmeddelanden, medan cerr-objektet inte gör det.