Ц++ истреам функције

C Istream Funkcije



Термин „ток“ у Ц++ описује ток карактера између програмске нити и у/из. Ц++ стреам класе су потребне за унос и излаз акција на ИО уређајима и датотекама. Ове класе су дизајниране да управљају уносом и излазом програма и имају посебну функционалност.

Хијерархија класа стрима

Ц++ класа је састављена од метода потребних за управљање подацима које садржи.

флоат, доублес и цлассес су типови података слични инт. Јединствена променљива са класом као њеним типом података се назива Ц++ објекат. Унапред специфицирани специјални објекти „цин“ и „цоут“ имају различите класе као своје типове података.







Подаци уписани у 'цоут' или прочитани из 'цин' су примери токова података у или из програма у Ц++. Тренутно разматрамо следеће четири класе за ову:



Стримујте
Овај улазни ток може послужити било којој сврси. Илустрација истреама је цин.



Остреам
То је излазни ток са неколико употреба. Отоки долазе у облицима цоут и цин.





Ако стреам
То је ток улазних датотека.

Од тока
То је ток излазних датотека. Наслеђивање је појам који се у великој мери користи у објектно оријентисаном програмирању, као што је Ц++, где неке класе преузимају карактеристике других класа које су већ креиране. Класе предака тада постају саме специјализације кроз укључивање нових карактеристика.



Ако стреам цласс
Ифстреам се може третирати на исти начин као и истреам, што и јесте.

Стрим класе
На исти начин на који функционише ифстреамс, али са излазом уместо улаза, офстреам је ток излазне датотеке. Офстреам се користи на исти начин као и цоут након што је конструисан, отворен и верификован да нема грешака.

Иос класа
Из ове класе потичу све класе тока. Улазни и излазни токови су два различита типа.

Дефинише делове тока који су независни од улазног или излазног статуса тока у иОС бази.

За разлику од чланова о којима се говори у иос бази, у овом делу су описани чланови који зависе од параметара шаблона.

Стрим (улаз)
Због сложености библиотеке иостреам, нећемо је моћи у потпуности покрити у овим лекцијама. Међутим, ми ћемо истаћи функције које се највише користе. У овом одељку ћемо погледати класу уноса из различитих углова (истреам).

Сазнали смо да ће се оператор екстракције (>>) користити за прикупљање података из улазног тока.

СТРЕАМ

У програмском језику Ц++, улазним током управља класа истреам. Улаз се чита и разуме као низ знакова који користе ове објекте улазног тока. Уносом управља цин.

Класе чланова

истреам::сентри
Класа која обавља много задатака и сваки пут када се изводи процедура уноса. Његов деструктор није обавезан да изврши никакве радње. Међутим, имплементације могу извршити додатне задатке покретања или чишћења у току који деле све улазне операције коришћењем креирања и уништавања стражарских објеката.

Функције

истреам::гцоунт
Даје број знакова који је добијен из последње неформатиране радње уноса објекта. Неформатиране процедуре уноса – гет, гетлине, игноре, пеек, реад, реад соме, путбацк и унгет – мењају вредност коју враћа ова функција. Међутим, имајте на уму да позивање пеекс, путбацк или унгет не издваја ниједан карактер. Као резултат тога, бројање ће увек враћати 0.

истреам::гет
Један знак уклања један знак из стрима. Знак се или поставља као вредност аргумента или се враћа (први потпис) (други потпис).

Ц стринг: Ако је знак за разграничење присутан, он се не уклања из улазне секвенце, већ се чува као следећи знак који се преузима из тока ако је присутан.

истреам::гетлине
Уклања знакове из тока као неформатирани улаз и чува их као ц-стринг у променљивој „с“ све док екстраховани знак не постане знак за разграничење или „н“ знакова није уписано у „с“. Поред тога, метода ће престати да издваја знакове ако дође до краја датотеке.

Интерно, функција креира објекат пре него што приступи улазној секвенци. Коначно, он убија објекат пре враћања, издвајајући знакове из његовог повезаног објекта бафера тока (под претпоставком да је све у реду) као да извршава једну од метода својих чланова, сбумпц или сгетц.

истреам::игноре
Знакови се узимају из улазне секвенце и одбацују један по један све док се не уклони „н“ карактера или док се један не упореди једнако са делимом. Поред тога, ако се достигне крај датотеке, функција зауставља екстракцију карактера. Функција поставља ознаку „еофбит“ ако прерано достигне ову тачку (пре него што издвоји н знакова или открије делим).

Пре приступа улазној секвенци, функција интерно конструише стражарски објекат (са носкипвс ће бити тачно). Коначно, он убија стражарски објекат пре повратка, издвајајући знакове из његовог повезаног објекта бафера тока (под претпоставком да је све у реду) као да извршава једну од метода својих чланова: сбумпц или сгетц.

истреам::оператор>>
Оператор екстракције (>>) примењује овај оператор на улазни ток. Има превише чланова као функција.

Аритметички тип

Знакови се извлаче из тока и рашчлањују секвенцијално да би се представила вредност одговарајућег типа, која се затим чува као вредност „вал“. Пре приступа улазној секвенци, функција интерно конструише стражарски објекат (носкипвс ће бити нетачан). Ако све добро прође, онда покреће нум гет::гет да доврши процесе екстракције и рашчлањивања уз модификацију унутрашњих ознака стања тока. Објекат стражара је на крају уништен пре него што оде.

Функција интерно генерише стражарски објекат пре читања улазне секвенце, она се посматра као извршавање форматираног уноса. Коначно, он убија стражарски објекат пре повратка, издвајајући знакове из повезаног објекта бафера тока (под претпоставком да је све у реду) као да извршава једну од својих метода члана, сбумпц или сгетц.

Манипулатори

Позива се пф (*ово), где пф може бити манипулатор. Манипулатори су рутине креиране посебно да буду позване када се позове овај оператор. Ова процедура не утиче на улазну секвенцу и ниједан карактер се не издваја.

истреам::путбацк
Враћени карактер покушава да помери курсор за један знак надоле у ​​току тако да последњи карактер преузет из тока може поново да се издвоји операцијама уноса.

Пре приступа улазној секвенци, функција интерно конструише стражарски објекат. Затим позива спутбацкц(ц) на свом повезаном објекту бафера тока (ако је добар). Објекат стражара је на крају уништен пре него што оде.

истреам::реад
Прочитајте блок података:

Знакови 'н' се узимају из тока и затим се чувају у низу на који је означено са 'с'. Ова функција само реплицира блок података без прегледа садржаја података или додавања нул знака на крају.

Унутар функције, објекат стражара се прво креира пре него што се приступи улазној секвенци. Коначно, он убија стражарски објекат пре повратка, издвајајући знакове из његовог повезаног објекта бафера тока (под претпоставком да је све у реду) као да извршава једну од метода својих чланова: сбумпц или сгетц.

Број чланова који позивају ће вратити укупан број знакова које је ова функција правилно прочитала и сачувала.

истреам::реадсоме
Ова функција зависи од унутрашњег рада специфичног објекта бафера тока који је повезан са стримом, чије је понашање у великој мери дефинисано имплементацијом за стандардне класе.

Унутар функције, објекат стражара се прво креира пре него што се приступи улазној секвенци. Затим (ако је успешан), позива функцију члана у објекту бафера тока аваил да би одредио колико је знакова сада доступно пре него што позове „сбумпц“ да издвоји до тог броја знакова (или сгетц). Објекат стражара је на крају уништен пре него што оде.

истреам::сеекг
Позиција у линији за унос одређује где ће следећи карактер бити извучен из улазног тока. Пре читања улазне секвенце, функција интерно конструише стражарски објекат. Затим (ако је ОК), врши један од два позива одговарајућем објекту бафера тока: пубсеекпос (1) или пубсеекофф (2), (ако постоји). Коначно, брише стражарски предмет и одлази.

истреам::синц
Поравнајте улазни бафер:

Доводи контролисану улазну секвенцу повезаног бафера тока у синхронизацију. Специфична имплементација објекта бафера тока повезаног са стреамом одређује специфичности операције.

истреам::теллг
Добијте позицију улазне секвенце:

Даје позицију тренутног карактера у улазном току. Функција тада враћа -1. Ако члан не успе, враћа тачно.

Враћа рдбуф()->пубсеекофф ако није (0,цур,ин). Објекат стражара је на крају уништен пре него што оде.

истреам::унгет
Уклони знак:

Покушава да помери курсор надоле за један знак у стриму тако да последњи карактер преузет из тока може поново да се издвоји операцијама уноса.

Није члан

оператор>> (истреам)
Оператор екстракције (>>) обезбеђује форматирани унос са овом радњом када се примени на улазни ток.

Један знак: Низ знакова узима следећи знак из њега и чува га као вредност „ц“. Процес издвајања знакова из ис и њиховог складиштења у с, као ц-стринг, зауставља се (ако ширина није нула) када се наиђе на знак размака или (видтх ()-1) карактери се екстрахују.

Екстракција рвалуе: омогућава вађење из рвалуе истреам објеката, што има исти резултат као и издвајање из лвалуес: Позива ис>>Вал.

Пример 1

У овом случају, испитали бисмо како можемо да добијемо било коју вредност од корисника, а затим је прикажемо као резултат на екрану.

#инцлуде <иостреам>
Користећи именског простора стд ;
инт главни ( )
{
инт Не ;
цоут << 'Молимо унесите број' ;
једење >> Не ;
цоут << 'Унета вредност је: ' << Не << ' ' ;
}

Укључили бисмо датотеку заглавља <иостреам>. Затим ћемо користити именски простор „стд“ у стандардном именском простору. Ми бисмо функцију назвали маин(). Променљива под називом „не“ биће декларисана у оквиру овог метода. Тип података „инт“ је представљен за ову променљиву. Термин „инт“ је скраћеница од целог броја. Након тога се користи изјава „цоут“. Ова команда штампа линију.

Корисник ће унети било коју случајну вредност након што се овај текст прикаже на екрану. Тада би се користила изјава „цин“. Ова команда захтева од корисника да наведе вредност. Број који је корисник унео биће сачуван у променљивој. Вредност коју је дао корисник би била приказана на екрану помоћу команде „цоут“.

Пример 2

У овом случају, видели бисмо како добијамо било које име од корисника, а затим га приказујемо на екрану као резултат.

#инцлуде<иостреам>
Користећи именског простора стд ;

инт главни ( )

{

цхар име [ 125 ] ;
цоут << 'Унесите своје име' << ендл ;


једење >> вс ;

једење . гетлине ( име, 125 ) ;

цоут << име << ендл ;

повратак 0 ;

}

Уградили бисмо датотеку заглавља <иостреам>. Затим ћемо користити стандардни простор имена као „стд“. Позвали бисмо функцију маин(). У оквиру ове методе декларисаћемо променљиву. Ова променљива садржи тип података „цхар“. Тада се користи изјава „цоут“. Ова команда приказује текст „Унесите своје име“ на екрану. Након приказа овог текста на екрану, корисник би унео било које име. Затим бисмо користили изјаву „цин“.

Ова команда преузима вредност од корисника. Наведено име би било ускладиштено у променљивој „вс“. Овде бисмо, још једном, користили команду 'цин'. Унутар ове команде примењује се функција гетлине(). Ова функција садржи параметар који укључује име које је унео корисник и дужину имена. Команда 'цоут' ће се користити за приказ имена које је дао корисник. Да бисте прекинули код, користиће се команда 'ретурн 0'.

Закључак

Прво смо разговарали о томе шта су Ц++ истреам функције. Затим посматрамо неколико поменутих функција и важних дефиниција. У овом чланку смо покренули различите кодове који садрже различите истреам функције. У првом коду узимамо било који број од корисника и приказујемо тај број на екрану. У другом, корисник је унео име и одштампао то име на екрану.