Co jsou streamy v C ++?
C ++ poskytuje uživatelům řadu knihoven, které mohou použít k provádění úkolů vstupu / výstupu. Tyto úkoly se provádějí ve formě sekvencí bajtů, populárně nazývaných streamy.
Proudy jsou rozděleny do dvou:
Typy proudů
- Vstupní proud: Jedná se o typ proudu, kde bajty proudí ze zařízení, jako je klávesnice, do hlavní paměti.
- Výstupní proud: Jedná se o typ proudu, kde bajty proudí v opačném směru, tj. Z hlavní paměti a poté do zařízení, například na obrazovku.
V tomto výukovém programu C ++ se naučíte:
- Co jsou streamy v C ++?
- Jak fungují streamy?
- Tabulka funkcí
- Soubory záhlaví C ++ pro vstup / výstup
- std :: cout
- std :: cin
- std :: cerr
- std :: ucpat
- Zpracování chyb s IO streamy:
Jak fungují streamy?
C ++ streamy fungují následovně:
- Nejprve je stream inicializován správným typem.
- Dále byste měli určit, kde se I / O vyskytne, pomocí ukazatelů get / put.
- Po přechodu na správné místo ve streamu můžete provádět vstupní a výstupní úkoly pomocí operátorů >> a <<.
Tabulka funkcí
Níže jsou uvedeny funkce poskytované v hlavičkovém souboru stream.h:
Třída | Funkce |
Filebuf | Nastavuje vyrovnávací paměť souborů pro čtení / zápis. Má v sobě funkce close () a open () |
fstreambase | Je to základní třída pro třídy ifstream, fstream a ofstream. Jeho operace jsou společné pro datové proudy souborů. |
ifstream | Je to třída proudu vstupního souboru pro poskytování vstupních operací. |
ofstream | Je to třída proudu výstupních souborů pro poskytování výstupních operací. |
fstream | Je to třída vstupního / výstupního proudu. Podporuje simultánní operace vstupu / výstupu. |
Soubory záhlaví C ++ pro vstup / výstup
C ++ poskytuje tři knihovny, které přicházejí s funkcemi pro provádění základních vstupních / výstupních úkolů. Obsahují:
- Iostream: Je to zkratka pro standardní vstupní / výstupní proud. Tento soubor záhlaví obsahuje definice pro objekty jako cin / cout / cerr.
- Iomanip: Je to zkratka pro vstupní / výstupní manipulátory. Knihovna přichází s funkcemi, které lze použít pro manipulaci s proudy. Obsahuje definice pro objekty jako setw, setprecision a další.
- Fstream: Toto je soubor záhlaví pro popis proudu souboru. Zpracovává data načtená ze souboru jako vstup nebo zapsaná do souboru, výstup.
Klíčová slova cin a cout jsou v C ++ velmi populární. Používají se k přijímání vstupů a tiskových výstupů. Chcete-li je použít, musíte do svého programu zahrnout soubor záhlaví iostream. Důvodem je, že jsou definovány v tomto souboru záhlaví. Pokud nezahrnete soubor záhlaví iostream, vygeneruje se chyba. To vyplývá z selhání kompilátoru C ++ pochopit význam klíčových slov.
Hlavní objekty definované v záhlaví souboru iostream jsou cin, cout, cerr a clog. Pojďme o nich diskutovat.
std :: cout
Objekt cout je instancí třídy iostream. Používá se k produkci výstupu na standardním výstupním zařízení, kterým je obvykle obrazovka. Používá se společně s operátorem vložení streamu (<<).
Příklad:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream, kde je definován objekt cout.
- Zahrňte std jmenný prostor, abychom ho nemuseli volat při používání jeho tříd.
- Zavolejte funkci main (). Programový kód by měl být přidán do jeho těla. Úvodní složená závorka {označuje začátek jejího těla.
- Vytvořte proměnnou znaků s názvem Vítejte, která bude obsahovat řetězec Vítejte na Guru99.
- Na konzole vytiskněte hodnotu řetězce vítaného. Endl je klíčové slovo C ++, což znamená koncový řádek. Přesune kurzor a začne tisknout text na další řádek.
- Po úspěšném provedení musí program vrátit hodnotu.
- Konec těla funkce main ().
std :: cin
Objekt cin je instancí třídy istream. Čte vstup ze vstupního zařízení, klávesnice. Obvykle se používá společně s operátorem extrakce (>>). Extrakční objekt je zodpovědný za extrakci dat zadaných prostřednictvím klávesnice z objektu cin.
Příklad:
Následující příklad ukazuje, jak použít klíč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ýstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream do našeho programu. Objekt cin je definován v tomto souboru záhlaví.
- Chcete-li používat jeho třídy, zahrňte standardní obor názvů. Při použití jeho tříd nebudete muset volat std.
- Zavolejte funkci main (). Programový kód by měl být přidán do jeho těla.
- Začátek těla programu.
- Deklarujte celočíselnou proměnnou s názvem číslo.
- Vytiskněte na obrazovce zprávu s výzvou k zadání čísla.
- Načíst hodnotu zadanou uživatelem na konzole z klávesnice.
- Vytiskněte hodnotu přečtenou výše na konzole spolu s dalším textem.
- Program by měl vrátit hodnotu, pokud se provede úspěšně.
- Konec těla hlavní funkce.
std :: cerr
Objekt cerr tvoří standardní proud chyb pro výstup chyb v C ++. Cerr je instancí třídy ostream. Objekt cerr je bez vyrovnávací paměti. To znamená, že se používá, když se má okamžitě zobrazit chybová zpráva.
Protože je bez vyrovnávací paměti, neukládá chybovou zprávu pro pozdější zobrazení. Používá se společně s operátorem vložení streamu (<<).
Příklad:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream, kde byl definován objekt cerr.
- Zahrňte std jmenný prostor, abychom ho nemuseli volat při používání jeho tříd.
- Zavolejte funkci main (). Logika programu by měla být přidána do jeho těla. Úvodní složená závorka označuje začátek těla funkce.
- Pomocí objektu cerr vytiskněte chybu na konzole.
- Po úspěšném provedení musí program vrátit hodnotu.
- Konec těla hlavní funkce.
std :: ucpat
Objekt clog je instancí třídy ostream. Používá se k zobrazování chyb na standardním displeji, monitoru. Je to podobné jako s cerr objektem, ale je to ve vyrovnávací paměti. Protože je ve vyrovnávací paměti, ukládá chybovou zprávu do vyrovnávací paměti, dokud není vyrovnávací paměť vyplněna / vyprázdněna. Používá se společně s operátorem vložení streamu (<<).
Příklad:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream, ve kterém je definován ucpaný objekt.
- Včetně std namespace, abychom mohli používat jeho třídy, aniž bychom jej volali.
- Volání funkce main (). Logika programu by měla být přidána do jeho těla. {Označuje začátek těla funkce.
- Pomocí objektu ucpání vytiskněte chybu na standardní výstup, monitor.
- Po úspěšném dokončení musí program vrátit hodnotu.
- Konec těla funkce main ().
Zpracování chyb s IO streamy:
Chcete-li zkontrolovat, zda je stream platný nebo ne, můžete jej použít jako logickou hodnotu.
Zde je příklad:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
Chcete-li získat více podrobností o stavu streamu, můžete použít tyto funkce:
- good () - vrátí true, pokud je vše v pořádku.
- bad () - vrátí true, pokud dojde k závažné chybě.
- fail () - vrátí true po neúspěšné operaci streamu.
- eof () - vrátí true, pokud dosáhne konce souboru.
Chcete-li vědět, zda konkrétní operace čtení / zápisu selhala, otestujte výsledek čtení.
Chcete-li například zkontrolovat, zda uživatel zadal platné celé číslo, postupujte takto:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
souhrn
- Vstupní a výstupní úkoly v C ++ se provádějí pomocí sekvence bajtů. Bajty se nazývají streamy.
- Ve vstupním proudu proudí bajty ze vstupního zařízení jako klávesnice do hlavní paměti.
- Ve výstupním proudu bajty z hlavní paměti poté do výstupního zařízení, jako je monitor.
- Objekt cin je instancí třídy istream. Čte vstup ze vstupního zařízení, jako je klávesnice.
- Objekt cout je instancí třídy ostream. Produkuje výstup na výstupních zařízeních, jako je monitor.
- Objekt cerr je instancí třídy ostream. Zobrazuje chybové objekty na monitoru.
- Objekt clog je instancí třídy ostream. Na výstupních zařízeních zobrazuje chybové zprávy.
- Objekt ucpání ukládá chybové zprávy do vyrovnávací paměti, zatímco objekt cerr nikoli.