Funkce C++ istream

Funkce C Istream



Termín „stream“ v C++ popisuje tok znaků mezi vláknem programu a i/o. Třídy streamů C++ jsou potřebné pro vstup a výstup akcí na IO zařízeních a souborech. Tyto třídy jsou navrženy pro správu vstupu a výstupu programu a mají zvláštní funkce.

Hierarchie tříd streamu

Třída C++ se skládá z metod potřebných ke správě a řízení dat, která obsahuje.

float, doubles a class jsou datové typy podobné int. Jedinečná proměnná s třídou jako datovým typem se nazývá objekt C++. Předem specifikované speciální objekty „cin“ a „cout“ mají různé třídy jako datové typy.







Data zapsaná do „cout“ nebo načtená z „cin“ jsou příklady datových toků do nebo z programů v C++. V současné době uvažujeme o následujících čtyřech třídách:



Streamujte to
Tento vstupní proud může sloužit libovolnému účelu. Ilustrace istreamu je cin.



Ostream
Jedná se o výstupní proud s několika způsoby použití. Ostreamy přicházejí ve formách cout a cin.





Pokud stream
Je to proud vstupních souborů.

Z proudu
Je to proud výstupních souborů. Dědičnost je pojem, který se hojně používá v objektově orientovaném programování, jako je C++, kde některé třídy přebírají vlastnosti jiných tříd, které již byly vytvořeny. Třídy předků se pak samy stanou specializacemi prostřednictvím zahrnutí nových funkcí.



Pokud stream class
S ifstream lze zacházet stejným způsobem jako s istreamem, což je to, co to je.

Ze streamové třídy
Stejným způsobem, jakým funguje ifstreams, ale s výstupem namísto vstupu, je ofstream výstupní souborový proud. Po vytvoření, otevření a ověření, že neobsahuje žádné chyby, se ofstream používá stejným způsobem jako cout.

třída Ios
Z této třídy pocházejí všechny třídy proudu. Vstupní a výstupní toky jsou dva různé typy.

Definuje části streamu, které jsou nezávislé na stavu vstupu nebo výstupu streamu v základně ios.

Na rozdíl od členů, které jsou diskutovány v základu ios, jsou v této části popsány členy závislé na parametrech šablony.

Stream (vstup)
Vzhledem ke složitosti knihovny iostream ji v těchto lekcích nebudeme moci úplně pokrýt. Zdůrazníme však funkce, které se používají nejvíce. V této části se podíváme na vstupní třídu z různých úhlů pohledu (istream).

Zjistili jsme, že operátor extrakce (>>) bude použit k získání dat ze vstupního toku.

PROUD

V programovacím jazyce C++ je vstupní proud zpracováván třídou istream. Vstup je čten a chápán jako řada znaků pomocí těchto objektů vstupního proudu. O vstup se stará cin.

Třídy členů

istream::sentry
Třída, která provádí mnoho úkolů a pokaždé, když je provedena vstupní procedura. Jeho destruktor není povinen provádět žádné akce. Implementace však mohou provádět další úlohy spouštění nebo čištění na streamu sdíleném všemi vstupními operacemi pomocí vytváření a ničení objektů hlídky.

Funkce

istream::gcount
Udává počet znaků, který byl získán z poslední neformátované vstupní akce objektu. Neformátované vstupní procedury – get, getline, ignore, peek, read, read some, putback a unget – mění hodnotu vrácenou touto funkcí. Mějte však na paměti, že volání peeks, putback nebo unget nevyjímá žádné znaky. Výsledkem je, že počet vždy vrátí 0.

istream::get
Jediný znak odebere jeden znak ze streamu. Znak je buď nastaven jako hodnota argumentu, nebo vrácen (první podpis) (druhý podpis).

Řetězec C: Pokud je přítomen oddělovací znak, neodstraní se ze vstupní sekvence, místo toho zůstane jako následující znak, který se má načíst z proudu, pokud je přítomen.

istream::getline
Odebere znaky ze streamu jako neformátovaný vstup a uloží je jako c-řetězec do proměnné „s“, dokud se extrahovaný znak nestane oddělovacím znakem nebo dokud nebudou znaky „n“ zapsány do „s“. Navíc metoda přestane extrahovat znaky, pokud dosáhne konce souboru.

Interně funkce vytvoří objekt před přístupem k vstupní sekvenci. Nakonec objekt před návratem zabije a extrahuje znaky z jeho přidruženého objektu vyrovnávací paměti proudu (za předpokladu, že je vše v pořádku), jako by spouštěl jednu z jeho členských metod, sbumpc nebo sgetc.

istream::ignorujte
Znaky jsou převzaty ze vstupní sekvence a vyřazovány jeden po druhém, dokud nebude vyjmuto „n“ znaků nebo dokud se jeden neporovná s oddělovačem. Pokud je navíc dosaženo konce souboru, funkce zastaví extrakci znaků. Funkce nastaví příznak „eofbit“, pokud tohoto bodu dosáhne příliš brzy (před extrahováním n znaků nebo objevením delim).

Před přístupem k vstupní sekvenci funkce interně zkonstruuje sentry objekt (s noskipw bude true). Nakonec zabije objekt sentry, než se vrátí, a extrahuje znaky z jeho přidruženého objektu vyrovnávací paměti proudu (za předpokladu, že je vše v pořádku), jako by spouštěl jednu z jeho členských metod: sbumpc nebo sgetc.

istream::operátor >>
Operátor extrakce (>>) použije tento operátor na vstupní proud. Má příliš mnoho členů jako funkci.

Aritmetický typ

Znaky jsou vyjmuty z proudu a sekvenčně analyzovány, aby reprezentovaly hodnotu správného typu, která se pak uloží jako hodnota „val“. Před přístupem k vstupní sekvenci funkce interně zkonstruuje objekt sentry (noskipws bude nepravdivé). Pokud je vše v pořádku, spustí se num get::get, aby se dokončily procesy extrakce a analýzy při úpravě vnitřních příznaků stavu streamu. Hlídací objekt je nakonec zničen, než odejde.

Funkce interně generuje objekt typu sentry před čtením vstupní sekvence, je viděna jako provádějící formátovaný vstup. Nakonec zabije objekt sentry, než se vrátí, a extrahuje znaky z jeho přidruženého objektu vyrovnávací paměti proudu (za předpokladu, že je vše v pořádku), jako by spouštěl jednu z jeho členských metod, sbumpc nebo sgetc.

Manipulátory

Zavolá se pf (*this), kde pf může být manipulátor. Manipulátory jsou rutiny vytvořené speciálně pro volání, když je vyvolán tento operátor. Vstupní sekvence není tímto postupem ovlivněna a nejsou extrahovány žádné znaky.

istream::putback
Obnovený znak se pokusí posunout kurzor o jeden znak v proudu dolů, aby bylo možné pomocí vstupních operací znovu extrahovat poslední znak načtený z proudu.

Před přístupem k vstupní sekvenci funkce interně zkonstruuje objekt stráže. Poté zavolá sputbackc(c) na přidružený objekt vyrovnávací paměti proudu (pokud je dobrý). Hlídací objekt je nakonec zničen, než odejde.

istream::číst
Přečíst datový blok:

Znaky „n“ jsou převzaty z proudu a poté jsou uloženy v poli, na které ukazuje „s“. Tato funkce pouze replikuje blok dat bez kontroly obsahu dat nebo přidání znaku null na konec.

V rámci funkce se nejprve vytvoří objekt hlídky, než se přistoupí k vstupní sekvenci. Nakonec zabije objekt sentry, než se vrátí, a extrahuje znaky z jeho přidruženého objektu vyrovnávací paměti proudu (za předpokladu, že je vše v pořádku), jako by spouštěl jednu z jeho členských metod: sbumpc nebo sgetc.

Volající počet členů vrátí celkový počet znaků, které tato funkce správně přečetla a uložila.

istream::čtené
Tato funkce je závislá na vnitřním fungování konkrétního objektu vyrovnávací paměti proudu propojeného s proudem, jehož chování je do značné míry implementačně definováno pro standardní třídy.

V rámci funkce se nejprve vytvoří objekt hlídky, než se přistoupí k vstupní sekvenci. Poté (pokud bude úspěšný) zavolá členskou funkci v objektu vyrovnávací paměti proudu, aby zjistil, kolik znaků je nyní k dispozici, než zavolá „sbumpc“ pro extrahování tohoto počtu znaků (nebo sgetc). Hlídací objekt je nakonec zničen, než odejde.

istream::seekg
Pozice ve vstupním řádku určuje, kde bude ze vstupního proudu vytažen následující znak. Před čtením vstupní sekvence funkce interně zkonstruuje objekt hlídky. Potom (pokud je v pořádku) provede jedno ze dvou volání odpovídajícího objektu vyrovnávací paměti proudu: pubseekpos (1) nebo pubseekoff (2), (pokud existuje). Nakonec vyhladí hlídkový předmět a odejde.

istream::sync
Zarovnejte vstupní vyrovnávací paměť:

Synchronizuje řízenou vstupní sekvenci vyrovnávací paměti propojeného proudu. Konkrétní implementace objektu vyrovnávací paměti proudu připojeného k proudu určuje specifika operace.

istream::tellg
Získejte pozici vstupní sekvence:

Udává pozici aktuální postavy ve vstupním proudu. Funkce pak vrátí -1. Pokud člen selže, vrátí hodnotu true.

Pokud ne, vrátí rdbuf()->pubseekoff (0,cur,in). Hlídací objekt je nakonec zničen, než odejde.

istream::unget
Odebrat znak:

Pokusí se posunout kurzor o jeden znak v proudu dolů, aby bylo možné pomocí vstupních operací znovu extrahovat poslední znak načtený z proudu.

Nečlen

operátor >> (istream)
Operátor extrakce (>>) poskytuje formátovaný vstup s touto akcí, když je aplikován na vstupní proud.

Jeden znak: Sekvence znaků z něj vyjme další znak a uloží jej jako hodnotu „c“. Proces extrahování znaků z is a jejich ukládání do s, jako c-řetězec, se zastaví (pokud šířka není nula), když je nalezen prázdný znak nebo byly extrahovány znaky (šířka ()-1).

Extrakce rvalue: umožňuje extrahovat z rvalue objektů istream, což má stejný výsledek jako extrahování z lvalues: Volá is>>Val.

Příklad 1

V tomto případě bychom prozkoumali, jak můžeme získat jakoukoli hodnotu od uživatele a poté ji zobrazit jako výsledek na obrazovce.

#include
použitím jmenný prostor std ;
int hlavní ( )
{
int Ne ;
cout << 'Zadejte prosím číslo' ;
jíst >> Ne ;
cout << 'Zadaná hodnota je: ' << Ne << ' \n ' ;
}

Zahrnuli bychom hlavičkový soubor . Dále použijeme jmenný prostor „std“ ve standardním jmenném prostoru. Volali bychom funkci main(). V rámci této metody bude deklarována proměnná s názvem „no“. Pro tuto proměnnou je reprezentován datový typ „int“. Výraz „int“ je zkratkou celého čísla. Poté se použije příkaz „cout“. Tento příkaz vytiskne řádek.

Uživatel zadá jakoukoli náhodnou hodnotu poté, co se tento text zobrazí na obrazovce. Pak by bylo použito prohlášení „cin“. Tento příkaz vyžaduje, aby uživatel uvedl hodnotu. Uživatelem zadané číslo bude uloženo do proměnné. Hodnota zadaná uživatelem by se zobrazila na obrazovce pomocí příkazu „cout“.

Příklad 2

V tomto případě bychom viděli, jak získáme jakékoli jméno od uživatele, a pak jej zobrazíme na obrazovce jako výsledek.

#include
použitím jmenný prostor std ;

int hlavní ( )

{

char název [ 125 ] ;
cout << 'Zadejte své jméno' << endl ;


jíst >> ws ;

jíst . getline ( název, 125 ) ;

cout << název << endl ;

vrátit se 0 ;

}

Začlenili bychom hlavičkový soubor . Dále použijeme standardní jmenný prostor jako „std“. Vyvolali bychom funkci main(). V rámci této metody budeme deklarovat proměnnou. Tato proměnná obsahuje datový typ „char“. Poté se použije příkaz „cout“. Tento příkaz zobrazí na obrazovce text „Zadejte své jméno“. Po zobrazení tohoto textu na obrazovce by uživatel zadal libovolné jméno. Pak bychom použili příkaz „cin“.

Tento příkaz převezme hodnotu od uživatele. Zadaný název by byl uložen v proměnné ‚ws‘. Zde bychom opět použili příkaz „cin“. V rámci tohoto příkazu se aplikuje funkce getline(). Tato funkce obsahuje parametr, který obsahuje jméno zadané uživatelem a délku jména. K zobrazení jména poskytnutého uživatelem bude použit příkaz „cout“. Pro ukončení kódu bude použit příkaz „return 0“.

Závěr

Nejprve jsme mluvili o tom, co jsou funkce C++ istream. Poté sledujeme několik zmíněných funkcí a důležitých definic. V tomto článku jsme spustili různé kódy, které obsahují různé funkce istream. V prvním kódu vezmeme libovolné číslo od uživatele a zobrazíme toto číslo na obrazovce. Ve druhém uživatel zadal jméno a vytiskl jej na obrazovku.