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.

  • 🔘 Patakok: A bemeneti és kimeneti feladatok bájtsorozatokként, úgynevezett adatfolyamokként haladnak, és adatokat mozgatnak a fő memória és az eszközök között.
  • 📥 Fejlécfájlok: Az iostream, iomanip és fstream könyvtárak definiálják az alapvető bemenethez és kimenethez használt objektumokat és manipulátorokat.
  • 🖨️ cout és cin: A cout objektum a beszúró operátorral nyomtat, míg a cin az ex-szel olvassa be az értékeket.tracciós operátor.
  • ⚠️ cerr és clog: Mindkettő hibát jelez, a cerr azonban puffereletlenül marad az azonnali megjelenítés érdekében, míg a clog először puffereli az üzeneteket.
  • 🇧🇷 Hibakezelés: A jó, rossz, sikertelen és eof ellenőrzések beolvassák a folyam állapotát, így a sikertelen műveletek biztonságosan észlelhetők.
  • 🤖 AI segítség: Az olyan mesterséges intelligencia által fejlesztett kódolási asszisztensek, mint a GitHub Copilot, rövid megjegyzésekből vagy függvénynevekből generálják a cin és a cout sablonokat.

C++ Alap bemeneti kimenet

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 a get/put mutatók segítségével meg kell adni, hogy hol fog történni az I/O.
  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ályFunkciók
FilebufBeállítja a fájlpuffereket olvasásra/írásra. Van benne close() és open() függvény
fstreambaseEz az ifstream, fstream és ofstream osztályok alaposztálya. Művelete közös a fájlfolyamokban.
ifstreamEz egy bemeneti fájl adatfolyam osztály a beviteli műveletek biztosítására.
folyamon kívülEz egy kimeneti fájl adatfolyam osztály a kimeneti műveletek biztosításához.
patakEz 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

Code Magyarázat:

  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. Hozz létre egy welcome nevű karakterváltozót, amely a Welcome to karakterláncot tartalmazza. Guru99.
  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. 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:

std::cin

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

std::cin

Code Magyarázat:

  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

Code Magyarázat:

  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

Code Magyarázat:

  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

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;
}

GYIK

A cout objektum típusbiztos és a beszúrási operátort használja, így automatikusan felismeri az egyes értékek típusát. A C nyelv printf függvénye formátumleírókra, például %d-re támaszkodik, amelyeknek manuálisan kell egyeztetniük az argumentumokat.

Az extracAz operátor az első szóköznél megáll, így a cin csak egy szót olvas be. Egy teljes sor szóközökkel való rögzítéséhez hívjuk meg a getline(cin, változó) függvényt, amely az új sor karakterig olvas be.

Mindkettő új sort kezd, de az endl minden alkalommal kiüríti a kimeneti puffert, ami lelassíthatja a forgalmas ciklusokat. Inkább sima új sor karaktert használj, és az endl-t arra az esetre tartsd fenn, ha a puffernek azonnal ki kell ürülnie.

A cin, cout, cerr és clog objektumok az std névtérben találhatók. Az std névtér használatával írva a cout nevet használhatjuk az std::cout helyett. A nagy projektek gyakran megtartják az explicit std előtagot az ütközések elkerülése érdekében.

Illeszd be az iomanip fejlécet, és használj manipulátorokat a cout függvénnyel. A setw manipulátor lefoglal egy mezőszélességet, a setprecision pedig beállítja, hogy hány számjegy jelenjen meg, formázva a számokat és oszlopokat a tárolt értékek megváltoztatása nélkül.

Igen. Mivel a cout és a cerr különálló adatfolyamok, egy shell átirányíthatja a normál kimenetet egy fájlba, miközben a hibák továbbra is megjelennek a képernyőn. Kódban az rdbuf egy adatfolyamot egy másik pufferre irányíthat.

Igen. A mesterséges intelligencia által vezérelt kódolási asszisztensek beolvasnak egy megjegyzést vagy függvénynevet, és létrehozzák a cin és cout utasításokat, valamint az iostream include utasítást és egy formázott promptot. RevA szélső esetekben a generált adatfolyam-logika megtekintése bölcs marad.

Igen. GitHub másodpilóta Gépelés közben elvégzi a cout formázást, a cin validációs ciklusokat és a cerr hibaellenőrzéseket. Ez 2026 C++ A kódintelligencia szemantikai szimbólum-felismerést is biztosít, így a többfájlos javaslatok konzisztensek maradnak.

Foglald össze ezt a bejegyzést a következőképpen: