C++ Základní vstup/výstup: Příklad Cout, Cin, Cerr
V čem jsou streamy C++?
C++ poskytuje uživatelům řadu knihoven, které mohou používat k provádění vstupních/výstupních úloh. Tyto úlohy se provádějí ve formě bajtových sekvencí, lidově nazývaných proudy.
Proudy jsou rozděleny do dvou:
Typy proudů
- Vstupní stream: Jedná se o typ toku, kde bajty proudí ze zařízení, jako je klávesnice, do hlavní paměti.
- Výstupní proud: Jedná se o typ toku, kde bajty proudí opačným směrem, tedy z hlavní paměti do zařízení, jako je obrazovka.
Jak streamy fungují?
C++ streamy fungují následovně:
- Nejprve je proud inicializován správným typem.
- Dále byste měli uvést, kde Vstup / výstup dojde pomocí get/put ukazatelů.
- Poté, co se dostanete na správné místo ve streamu, můžete provádět vstupní a výstupní úlohy pomocí operátorů >> a <<.
Tabulka funkcí
Následují funkce poskytované v záhlaví souboru stream.h:
Třída | Funkce |
---|---|
Filebuf | Nastavuje vyrovnávací paměti 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 souborové proudy. |
ifstream | Je to třída toku vstupních souborů pro poskytování vstupních operací. |
ofstream | Je to třída proudu výstupního souboru pro poskytování výstupních operací. |
fstream | Je to třída vstupního/výstupního proudu. Podporuje simultánní vstupně/výstupní operace. |
C++ Soubory záhlaví 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 úloh. Patří mezi ně:
- Iostream: Je to zkratka pro standardní vstup/výstup. Tento hlavičkový soubor je dodáván s definicemi objektů 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 se streamy. Obsahuje definice objektů jako setw, setprecision a další.
- Fstream: Toto je hlavičkový soubor pro popis datového proudu. Zpracovává data, která jsou načtena ze souboru jako vstup nebo která jsou zapsána do souboru, tedy výstupu.
Klíčová slova cin a cout jsou velmi populární v C++. Používají se pro odebírání vstupů, respektive tiskových výstupů. Chcete-li je používat, musíte do programu zahrnout soubor záhlaví iostream. Důvodem je, že jsou definovány v tomto hlavičkovém souboru. Pokud soubor záhlaví iostream nezadáte, dojde k chybě. To je důsledkem selhání ze strany C++ kompilátor, abyste pochopili význam klíčových slov.
Hlavní objekty definované v souboru záhlaví iostream jsou cin, cout, cerr a clog. Pojďme o nich diskutovat.
std::out
Objekt cout je instancí třídy iostream. Používá se pro produkci výstupu na standardním výstupním zařízení, kterým je normálně obrazovka. Používá se společně s operátorem vkládání proudu (<<).
Příklad
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream, kde je definován objekt cout.
- Zahrňte jmenný prostor std, abychom jej nemuseli volat při použití jeho tříd.
- Zavolejte funkci main(). Kód programu by měl být přidán do jeho těla. Otevřená složená závorka { označuje začátek jejího těla.
- Vytvořte znakovou proměnnou s názvem welcome, která bude obsahovat řetězec Welcome to Guru99.
- Vytiskněte hodnotu řetězce welcome na konzole. Konec je a C++ klíčové slovo s významem koncový řádek. Přesune kurzor a začne tisknout text na dalším řádku.
- 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. Normálně se používá společně s operátorem extrakce (>>). Objekt extrakce je zodpovědný za extrahování dat zadaných pomocí klávesnice z objektu cin.
Příklad
Následující příklad ukazuje, jak použít klíčové slovo cin in C++:
#include <iostream> using 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 kódu:
Vysvětlení kódu:
- Zahrňte hlavičkový soubor iostream do našeho programu. Objekt cin je definován v tomto souboru záhlaví.
- Chcete-li používat jeho třídy, zahrňte jmenný prostor std. Při použití jeho tříd nebudete muset volat std.
- Zavolejte funkci main(). Kód programu by měl být přidán do jeho těla.
- Spuštění těla programu.
- Prohlásit celočíselná proměnná jmenované číslo.
- Vytiskněte na obrazovku zprávu s výzvou k zadání čísla.
- Přečtěte hodnotu zadanou uživatelem na konzole z klávesnice.
- Vytiskněte hodnotu přečtenou výše na konzole vedle jiného textu.
- Pokud se program úspěšně spustí, měl by vrátit hodnotu.
- Konec těla hlavní funkce.
std::cerr
Objekt cerr tvoří standardní tok chyb pro výstup chyb 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 vkládání proudu (<<).
Příklad
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream, kde byl definován objekt cerr.
- Zahrňte jmenný prostor std, abychom jej nemuseli volat při použití jeho tříd.
- Zavolejte funkci main(). Logika programu by měla být přidána do jeho těla. Otevřená složená závorka označuje začátek těla funkce.
- Pomocí objektu cerr vytiskněte chybu na konzole.
- Program musí po úspěšném provedení vrátit hodnotu.
- Konec těla hlavní funkce.
std::ucpání
Objekt clog je instancí třídy ostream. Používá se k zobrazení chyb na standardním displeji, monitoru. Je podobný objektu cerr, ale má vyrovnávací paměť. Protože je vyrovnávací paměť, ukládá chybovou zprávu do vyrovnávací paměti, dokud se vyrovnávací paměť nenaplní/nevyprázdní. Používá se společně s operátorem vkládání proudu (<<).
Příklad
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream, ve kterém je definován objekt clog.
- Včetně jmenného prostoru std, abychom mohli používat jeho třídy, aniž bychom ho 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 clog vytiskněte chybu na standardní výstup, monitor.
- Program musí po úspěšném dokončení 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 další podrobnosti o stavu streamu, můžete použít tyto funkce:
- good()- vrátí true, pokud je vše v pořádku.
- bad()- vrátí hodnotu true, pokud dojde k závažné chybě.
- fail()- po neúspěšné operaci streamu vrátí hodnotu true.
- eof()- vrátí true, pokud dosáhne konce souboru.
Chcete-li zjistit, zda se konkrétní operace čtení/zápisu nezdařila, 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; }
Shrnutí
- Vstupní a výstupní úlohy In C++ se provádějí prostřednictvím sekvence bajtů. Byty se nazývají proudy.
- Ve vstupním toku tečou bajty ze vstupního zařízení jako klávesnice do hlavní paměti.
- Ve výstupním proudu pak bajty z hlavní paměti 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. Vytváří výstup na výstupních zařízeních, jako je monitor.
- Objekt cerr je instancí třídy ostream. Na monitoru zobrazuje chybové objekty.
- Objekt clog je instancí třídy ostream. Zobrazuje chybová hlášení na výstupních zařízeních.
- Objekt clog ukládá chybové zprávy do vyrovnávací paměti, zatímco objekt cerr nikoli.