C++ Alap bemenet/kimenet: Cout, Cin, Cerr Példa
⚡ Okos összefoglaló
C++ A bemeneti és kimeneti műveletek olyan stream objektumokra támaszkodnak, amelyek bájtsorozatokként mozgatják az adatokat programok és eszközök között, ahol a cin a billentyűzet bemenetét olvassa, a cout, cerr és clog pedig a kimenetet írja a képernyőre.

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 a get/put mutatók segítségével meg kell adni, hogy hol fog történni az I/O.
- 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:
Code Magyarázat:
- 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.
- Hozz létre egy welcome nevű karakterváltozót, amely a Welcome to karakterláncot tartalmazza. Guru99.
- 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. Bemenetet olvas a beviteli eszközről, a billentyűzetről. Általában az ex-szel együtt használják.tracoperátor (>>). Az extraca tion objektum felelős az ex-érttraca billentyűzeten keresztül bevitt adatok bevitele a cin objektumból.
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:
Code Magyarázat:
- 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:
Code Magyarázat:
- 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:
Code Magyarázat:
- 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
Ugyanezek a stream objektumok jelentik azt is, hogy egy művelet sikeres volt-e, amit a stream állapot ellenőrzések mutatnak ki.
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; }




