C++ Alap bemenet/kimenet: Cout, Cin, Cerr Példa

Miben vannak a Streamek C++?

C++ számos könyvtárat biztosít a felhasználóknak, amelyek segítségével bemeneti/kimeneti feladatokat hajthatnak végre. Ezeket a feladatokat bájtsorozatok, népiesen streamek formájában hajtják végre.

A folyamok két részre oszlanak:

A folyamok típusai

  • Bemeneti adatfolyam: Ez egy olyan adatfolyam, amelyben a bájtok egy eszközről, például billentyűzetről áramlanak a fő memóriába.
  • Kimeneti adatfolyam: Ez egy olyan típusú adatfolyam, ahol a bájtok az ellenkező irányba áramlanak, azaz a fő memóriából, majd az eszközbe, például a kijelzőbe.

Hogyan működnek a streamek?

C++ A streamek a következőképpen működnek:

  1. Először egy adatfolyamot inicializálunk a megfelelő típussal.
  2. Ezután meg kell adnia, hol a I / O get/put mutatók használatával történik.
  3. Miután a megfelelő helyre került egy adatfolyamban, a >> és << operátorok használatával beviteli és kimeneti feladatokat hajthat végre.

Funkció táblázat

A stream.h fejlécfájlban a következők találhatók:

Osztály Funkciók
Filebuf Beállítja a fájlpuffereket olvasásra/írásra. Van benne close() és open() függvény
fstreambase Ez az ifstream, fstream és ofstream osztályok alaposztálya. Művelete közös a fájlfolyamokban.
ifstream Ez egy bemeneti fájl adatfolyam osztály a beviteli műveletek biztosítására.
folyamon kívül Ez egy kimeneti fájl adatfolyam osztály a kimeneti műveletek biztosításához.
patak Ez egy bemeneti/kimeneti adatfolyam osztály. Támogatja az egyidejű bemeneti/kimeneti műveleteket.

C++ Fejlécfájlok a bemenethez/kimenethez

C++ három olyan könyvtárat biztosít, amelyek az alapvető bemeneti/kimeneti feladatok elvégzésére szolgáló funkciókkal rendelkeznek. Ezek a következők:

  • Iostream: Ez a szabványos bemeneti/kimeneti adatfolyam rövidítése. Ez a fejlécfájl olyan objektumokra vonatkozó definíciókat tartalmaz, mint a cin/cout/cerr.
  • Iomanip: Ez az input/output manipulátorok rövidítése. A könyvtár olyan funkciókkal rendelkezik, amelyek a folyamok kezeléséhez használhatók. Olyan objektumok definícióit tartalmazza, mint a setw, setprecision és mások.
  • Fstream: Ez egy fejlécfájl a fájlfolyam leírására. A fájlból bemenetként beolvasott vagy fájlba, kimenetbe írt adatokat kezel.

A cin és cout kulcsszavak nagyon népszerűek C++. Bemenetek, illetve nyomtatási kimenetek felvételére szolgálnak. Használatukhoz tartalmaznia kell az iostream fejlécfájlt a programban. Ennek az az oka, hogy a fejlécfájlban vannak meghatározva. Az iostream fejlécfájl felvételének elmulasztása hibát generál. Ez a C++ fordítóprogramot, hogy megértse a kulcsszavak jelentését.

Az iostream fejlécfájlban meghatározott fő objektumok a cin, cout, cerr és a clog. Beszéljük meg őket.

std::cout

A cout objektum az iostream osztály egy példánya. Kimenet előállítására szolgál egy szabványos kimeneti eszközön, amely általában a képernyő. Az adatfolyam beillesztési operátorával (<<) együtt használatos.

Példa

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

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

output:

std::cout

Itt van egy képernyőkép a kódról:

std::cout

Kód magyarázata:

  1. Tartalmazza az iostream fejlécfájlt, ahol a cout objektum definiálva van.
  2. Szerelje be az std névteret, hogy ne kelljen meghívnunk az osztályok használatakor.
  3. Hívja meg a main() függvényt. A programkódot hozzá kell adni a törzséhez. A nyitó göndör zárójel { testének kezdetét jelzi.
  4. Hozzon létre egy üdvözlő karakterváltozót, amely tartalmazza az Üdvözöljük a Guru99-ben karakterláncot.
  5. Nyomtassa ki az üdvözlő karakterlánc értékét a konzolon. A endl egy C++ végsort jelentő kulcsszó. Mozgatja a kurzort, és elkezdi a szöveg nyomtatását a következő sorban.
  6. Sikeres végrehajtás esetén a programnak értéket kell visszaadnia.
  7. A main() függvény törzsének vége.

std::cin

A cin objektum az istream osztály egy példánya. Beolvassa a bemenetet a beviteli eszközről, a billentyűzetről. Általában az extrakciós operátorral (>>) együtt használatos. Az extrakciós objektum felelős a billentyűzeten keresztül bevitt adatok cin objektumból történő kinyeréséért.

Példa

A következő példa bemutatja a cin kulcsszó használatát 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

Itt van egy képernyőkép a kódról:

std::cin

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a programunkba. A cin objektum ebben a fejlécfájlban van definiálva.
  2. Tartalmazza az std névteret az osztályok használatához. Nem kell meghívnia az std-t az osztályok használatakor.
  3. Hívja meg a main() függvényt. A programkódot hozzá kell adni a törzséhez.
  4. A program törzsének kezdete.
  5. Nyújtsa be a egész szám változó nevű szám.
  6. Nyomtasson ki egy üzenetet a képernyőre, amely szám megadására kéri a felhasználót.
  7. Olvassa be a felhasználó által a konzolon megadott értéket a billentyűzetről.
  8. Nyomtassa ki a fent olvasott értéket a konzolon a többi szöveg mellé.
  9. A programnak értéket kell visszaadnia, ha sikeresen fut.
  10. A fő funkció törzsének vége.

std::cerr

A cerr objektum képezi a szabványos hibafolyamot a hibák kimenetére C++. A Cerr az ostream osztály egy példánya. A cerr objektum nincs pufferelve. Ez azt jelenti, hogy akkor használják, ha azonnal megjelenik egy hibaüzenet.

Mivel nincs pufferelve, nem tárol hibaüzenetet egy későbbi megjelenítéshez. Az adatfolyam beillesztési operátorával (<<) együtt használatos.

Példa

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

	cerr << "An Error occurred!";

	return 0;
}

output:

std::cerr

Itt van egy képernyőkép a kódról:

std::cerr

Kód magyarázata:

  1. Tartalmazza az iostream fejlécfájlt, ahol a cerr objektum meghatározásra került.
  2. Szerelje be az std névteret, hogy ne kelljen meghívnunk az osztályok használatakor.
  3. Hívja meg a main() függvényt. A program logikáját hozzá kell adni a törzséhez. A nyitó göndör kapcsos zárójel jelzi a funkció törzsének kezdetét.
  4. Használja a cerr objektumot a hiba kinyomtatásához a konzolon.
  5. A programnak értéket kell visszaadnia a sikeres végrehajtás után.
  6. A fő funkció törzsének vége.

std::clog

A clog objektum az ostream osztály egy példánya. A hibák kijelzésére szolgál a szabványos kijelzőn, a monitoron. Hasonló a cerr objektumhoz, de pufferelt. Mivel pufferelt, a hibaüzenetet a pufferben tárolja, amíg a puffer meg nem telik/kiürül. Az adatfolyam beillesztési operátorával (<<) együtt használatos.

Példa

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

output:

std::clog

Itt van egy képernyőkép a kódról:

std::clog

Kód magyarázata:

  1. Beleértve az iostream fejlécfájlt, amelyben az eltömődés objektum definiálva van.
  2. Beleértve az std névteret, hogy az osztályait hívás nélkül is használhassuk.
  3. A main() függvény meghívása. A program logikáját hozzá kell adni a törzséhez. A { a függvény törzsének kezdetét jelöli.
  4. Használja az eltömődés objektumot, hogy hibát nyomtasson a szabványos kimenetre, a monitorra.
  5. A programnak értéket kell visszaadnia a sikeres befejezés után.
  6. A main() függvény törzsének vége.

Hibakezelés az IO adatfolyamokkal

Annak ellenőrzéséhez, hogy egy adatfolyam érvényes-e vagy sem, használhatja logikai értékként.

Íme egy példa:

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

Ha további részleteket szeretne megtudni az adatfolyam állapotáról, használja az alábbi funkciókat:

  • jó()- igazat ad vissza, ha minden rendben van.
  • bad()- igazat ad vissza, ha végzetes hiba történik.
  • fail()- a sikertelen adatfolyam-művelet után igaz értéket ad vissza.
  • Az eof()- igaz értéket ad vissza, ha eléri a fájl végét.

Ha meg szeretné tudni, hogy egy adott olvasási/írási művelet sikertelen volt-e, tesztelje az olvasási eredményt.

Például annak ellenőrzéséhez, hogy a felhasználó érvényes egész számot adott-e meg, tegye a következőket:

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

Összegzésként

  • A bemeneti és kimeneti feladatok In C++ bájtsorozaton keresztül történik. A bájtokat folyamoknak nevezzük.
  • Egy bemeneti adatfolyamban a bájtok a beviteli eszközről, mint egy billentyűzetről, a fő memóriába áramlanak.
  • Egy kimeneti adatfolyamban a bájtok a fő memóriából, majd egy kimeneti eszközbe, például monitorba kerülnek.
  • A cin objektum az istream osztály egy példánya. Beolvas egy beviteli eszközről, például a billentyűzetről.
  • A cout objektum az ostream osztály egy példánya. Kimenetet állít elő olyan kimeneti eszközökön, mint a monitor.
  • A cerr objektum az ostream osztály egy példánya. A hibaobjektumokat jeleníti meg a monitoron.
  • A clog objektum az ostream osztály példánya. Hibaüzeneteket jelenít meg a kimeneti eszközökön.
  • A clog objektum puffereli a hibaüzeneteket, míg a cerr objektum nem.