Čo sú to streamy v C ++?
C ++ poskytuje používateľom množstvo knižníc, ktoré môžu používať na vykonávanie vstupno-výstupných úloh. Tieto úlohy sa vykonávajú vo forme bajtových sekvencií, ľudovo nazývaných streamy.
Prúdy sú rozdelené na dva:
Typy prúdov
- Vstupný prúd: Jedná sa o typ toku, v ktorom bajty prúdia zo zariadenia, napríklad z klávesnice, do hlavnej pamäte.
- Výstupný prúd: Jedná sa o typ toku, v ktorom bajty prúdia v opačnom smere, to znamená z hlavnej pamäte na zariadenie, napríklad na obrazovku.
V tomto výučbe v C ++ sa dozviete:
- Čo sú to streamy v C ++?
- Ako fungujú streamy?
- Tabuľka funkcií
- Súbory hlavičky C ++ pre vstup / výstup
- std :: cout
- std :: cin
- std :: cerr
- std :: upchať
- Chyba pri spracovávaní IO streamov:
Ako fungujú streamy?
Prúdy C ++ fungujú takto:
- Najskôr sa stream inicializuje správnym typom.
- Ďalej by ste mali určiť, kde sa I / O vyskytnú, pomocou ukazovateľov get / put.
- Po prechode na správne miesto v streame môžete vykonávať vstupné a výstupné úlohy pomocou operátorov >> a <<.
Tabuľka funkcií
Nasledujúce sú funkcie poskytované v hlavičkovom súbore stream.h:
Trieda | Funkcie |
Filebuf | Nastavuje vyrovnávacie pamäte súborov na čítanie / zápis. Má v sebe funkcie close () a open () |
fstreambase | Je to základná trieda pre triedy ifstream, fstream a ofstream. Jeho operácie sú spoločné pre streamy súborov. |
ifstream | Je to trieda toku vstupných súborov na poskytovanie vstupných operácií. |
ofstream | Je to trieda toku výstupných súborov na poskytovanie výstupných operácií. |
fstream | Je to trieda vstupného / výstupného toku. Podporuje simultánne operácie vstupu a výstupu. |
Súbory hlavičky C ++ pre vstup / výstup
C ++ poskytuje tri knižnice, ktoré prichádzajú s funkciami na vykonávanie základných úloh vstupu a výstupu. Zahŕňajú:
- Iostream: Je to skratka pre štandardný vstupný / výstupný prúd. Tento súbor hlavičky obsahuje definície pre objekty ako cin / cout / cerr.
- Iomanip: Je to skratka pre vstup / výstup manipulátorov. Knižnica je vybavená funkciami, ktoré možno použiť na manipuláciu s prúdmi. Obsahuje definície pre objekty ako setw, setprecision a ďalšie.
- Fstream: Toto je hlavičkový súbor na opis toku súborov. Zaobchádza s údajmi, ktoré sa načítajú zo súboru ako vstup, alebo ktoré sa zapisujú do súboru, z výstupu.
Kľúčové slová cin a cout sú v C ++ veľmi populárne. Používajú sa na prijímanie vstupov a na tlač výstupov. Ak ich chcete použiť, musíte do svojho programu zahrnúť hlavičkový súbor iostream. Dôvod je ten, že sú definované v tomto hlavičkovom súbore. Ak nezahrniete súbor hlavičky iostream, vygeneruje sa chyba. Vyplýva to zo zlyhania kompilátora C ++ v porozumení významu kľúčových slov.
Hlavné objekty definované v hlavičkovom súbore iostream sú cin, cout, cerr a clog. Poďme o nich diskutovať.
std :: cout
Objekt cout je inštanciou triedy iostream. Používa sa na produkciu výstupu na štandardnom výstupnom zariadení, ktorým je zvyčajne obrazovka. Používa sa spolu s operátorom vkladania streamu (<<).
Príklad:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte súbor hlavičky iostream, kde je definovaný cout objekt.
- Zahrňte std namespace, aby sme ho pri používaní jeho tried nemuseli volať.
- Zavolajte funkciu main (). Programový kód by sa mal pridať do jeho tela. Otváracia zložená zátvorka {označuje začiatok jej tela.
- Vytvorte premennú znaku s názvom vitajte, ktorá bude obsahovať reťazec Vitajte na Guru99.
- Vytlačte hodnotu reťazca vítaného na konzole. Endl je kľúčové slovo C ++, čo znamená koncový riadok. Posunutím kurzora začne tlačiť text na ďalší riadok.
- Po úspešnom vykonaní musí program vrátiť hodnotu.
- Koniec tela funkcie main ().
std :: cin
Objekt cin je inštanciou triedy istream. Číta vstup zo vstupného zariadenia, z klávesnice. Normálne sa používa spolu s operátorom extrakcie (>>). Extrakčný objekt je zodpovedný za extrakciu údajov zadaných cez klávesnicu z objektu cin.
Príklad:
Nasledujúci príklad ukazuje, ako používať kľúčové slovo cin v C ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte do nášho programu hlavičkový súbor iostream. Objekt cin je definovaný v tomto hlavičkovom súbore.
- Zahrňte štandardný priestor mien, aby ste mohli používať jeho triedy. Pri používaní jeho tried nebudete musieť volať std.
- Zavolajte funkciu main (). Programový kód by sa mal pridať do jeho tela.
- Začiatok tela programu.
- Deklarujte celočíselnú premennú s názvom číslo.
- Vytlačte na obrazovke správu s výzvou na zadanie čísla.
- Na klávesnici si prečítajte hodnotu zadanú používateľom na konzole.
- Hodnotu prečítanú vyššie vytlačte na konzolu spolu s ďalším textom.
- Program by mal vrátiť hodnotu, ak sa úspešne spustí.
- Koniec tela hlavnej funkcie.
std :: cerr
Objekt cerr tvorí štandardný prúd chýb pre výstupné chyby v C ++. Cerr je inštanciou triedy ostream. Objekt cerr je bez vyrovnávacej pamäte. To znamená, že sa používa, keď sa má okamžite zobraziť chybové hlásenie.
Pretože je bez vyrovnávacej pamäte, neukladá chybové hlásenie pre neskoršie zobrazenie. Používa sa spolu s operátorom vkladania streamu (<<).
Príklad:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Zahrňte súbor hlavičky iostream tam, kde bol definovaný cerr objekt.
- Zahrňte std namespace, aby sme ho pri používaní jeho tried nemuseli volať.
- Zavolajte funkciu main (). Logika programu by mala byť pridaná do jeho tela. Otváracia zložená zátvorka predstavuje začiatok tela funkcie.
- Pomocou objektu cerr vytlačte chybu na konzole.
- Po úspešnom vykonaní musí program vrátiť hodnotu.
- Koniec tela hlavnej funkcie.
std :: upchať
Objekt clog je inštanciou triedy ostream. Používa sa na zobrazovanie chýb na štandardnom displeji, monitore. Je to podobné ako objekt cerr, ale je uložené vo vyrovnávacej pamäti. Pretože je v medzipamäti, ukladá chybové hlásenie do medzipamäte, kým nie je vyrovnávacia pamäť naplnená / vyprázdnená. Používa sa spolu s operátorom vkladania streamu (<<).
Príklad:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane iostream hlavičkového súboru, v ktorom je definovaný upchatý objekt.
- Vrátane štandardného priestoru mien, aby sme mohli používať jeho triedy bez toho, aby sme ich volali.
- Volanie funkcie main (). Logika programu by mala byť pridaná do jeho tela. {Označuje začiatok tela funkcie.
- Pomocou objektu upchatia vytlačte chybu na štandardný výstup, na monitor.
- Po úspešnom dokončení musí program vrátiť hodnotu.
- Koniec tela funkcie main ().
Chyba pri spracovávaní IO streamov:
Ak chcete skontrolovať, či je stream platný alebo nie, môžete ho použiť ako boolovskú hodnotu.
Tu je príklad:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
Ak chcete získať viac podrobností o stave streamu, môžete použiť tieto funkcie:
- good () - vráti pravdu, ak je všetko v poriadku.
- bad () - vráti true, ak dôjde k závažnej chybe.
- fail () - vráti true po neúspešnej operácii streamu.
- eof () - vráti true, ak sa dostane na koniec súboru.
Ak chcete vedieť, či konkrétna operácia čítania a zápisu zlyhala, otestujte výsledok čítania.
Ak napríklad chcete skontrolovať, či používateľ zadal platné celé číslo, postupujte takto:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Zhrnutie
- Vstupné a výstupné úlohy v C ++ sa vykonávajú prostredníctvom bajtovej postupnosti. Bajty sa nazývajú prúdy.
- Vo vstupnom toku bajty prúdia zo vstupného zariadenia ako klávesnica do hlavnej pamäte.
- Vo výstupnom prúde sa bajty z hlavnej pamäte potom dostanú do výstupného zariadenia, ako je monitor.
- Objekt cin je inštanciou triedy istream. Číta vstup zo vstupného zariadenia, ako je klávesnica.
- Objekt cout je inštanciou triedy ostream. Produkuje výstup na výstupných zariadeniach, ako je napríklad monitor.
- Objekt cerr je inštanciou triedy ostream. Na monitore zobrazuje chybové objekty.
- Objekt upchatia je inštanciou triedy ostream. Na výstupných zariadeniach zobrazuje chybové správy.
- Objekt upcháva chybové správy, zatiaľ čo objekt cerr nie.