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:
- Először egy adatfolyamot inicializálunk a megfelelő típussal.
- Ezután meg kell adnia, hol a I / O get/put mutatók használatával történik.
- 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:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Tartalmazza az iostream fejlécfájlt, ahol a cout objektum definiálva van.
- Szerelje be az std névteret, hogy ne kelljen meghívnunk az osztályok használatakor.
- 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.
- Hozzon létre egy üdvözlő karakterváltozót, amely tartalmazza az Üdvözöljük a Guru99-ben karakterláncot.
- 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.
- Sikeres végrehajtás esetén a programnak értéket kell visszaadnia.
- 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:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a programunkba. A cin objektum ebben a fejlécfájlban van definiálva.
- Tartalmazza az std névteret az osztályok használatához. Nem kell meghívnia az std-t az osztályok használatakor.
- Hívja meg a main() függvényt. A programkódot hozzá kell adni a törzséhez.
- A program törzsének kezdete.
- Nyújtsa be a egész szám változó nevű szám.
- Nyomtasson ki egy üzenetet a képernyőre, amely szám megadására kéri a felhasználót.
- Olvassa be a felhasználó által a konzolon megadott értéket a billentyűzetről.
- Nyomtassa ki a fent olvasott értéket a konzolon a többi szöveg mellé.
- A programnak értéket kell visszaadnia, ha sikeresen fut.
- 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:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Tartalmazza az iostream fejlécfájlt, ahol a cerr objektum meghatározásra került.
- Szerelje be az std névteret, hogy ne kelljen meghívnunk az osztályok használatakor.
- 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.
- Használja a cerr objektumot a hiba kinyomtatásához a konzolon.
- A programnak értéket kell visszaadnia a sikeres végrehajtás után.
- 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:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Beleértve az iostream fejlécfájlt, amelyben az eltömődés objektum definiálva van.
- Beleértve az std névteret, hogy az osztályait hívás nélkül is használhassuk.
- 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.
- Használja az eltömődés objektumot, hogy hibát nyomtasson a szabványos kimenetre, a monitorra.
- A programnak értéket kell visszaadnia a sikeres befejezés után.
- 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.