Funcions C++ istream

Funcions C Istream



El terme 'stream' en C++ descriu el flux de caràcters entre el fil del programa i l'E/S. Les classes de flux C++ són necessàries per introduir i sortir accions en dispositius i fitxers IO. Aquestes classes estan dissenyades per gestionar l'entrada i sortida del programa i tenen una funcionalitat particular.

Jerarquia de classes de flux

Una classe C++ està formada pels mètodes necessaris per gestionar i governar les dades que conté.

float, doubles i classes són tipus de dades similars a int. Una variable única amb una classe com a tipus de dades s'anomena objecte C++. Els objectes especials preespecificats 'cin' i 'cout' tenen diverses classes com a tipus de dades.







Les dades escrites a 'cout' o llegides des de 'cin' són exemples de fluxos de dades dins o fora de programes en C++. Actualment, estem considerant les quatre classes següents per a aquesta:



Transmet-ho
Aquest flux d'entrada pot servir qualsevol propòsit. Una il·lustració d'un istream és cin.



Ostream
És un flux de sortida amb diversos usos. Els ostreams es presenten en formes de cout i cin.





Si stream
És un flux de fitxers d'entrada.

De rierol
És un flux de fitxers de sortida. L'herència és una noció que s'utilitza molt en la programació orientada a objectes, com en C++, on algunes classes adopten les característiques d'altres classes que ja s'han creat. Aleshores, les classes ancestres esdevenen especialitzacions d'elles mateixes mitjançant la inclusió de noves característiques.



Si stream class
Un ifstream es pot tractar de la mateixa manera que un istream, que és el que és.

De classe stream
De la mateixa manera que funciona ifstreams, però amb sortida en lloc d'entrada, un ofstream és un fitxer de sortida. Un ofstream s'utilitza de la mateixa manera que cout després de ser construït, obert i verificat per no tenir errors.

Classe Ios
D'aquesta classe, van descendir totes les classes de corrent. Els fluxos d'entrada i sortida són de dos tipus diferents.

Defineix les parts del flux que són independents de l'estat d'entrada o sortida del flux a la base ios.

A diferència dels membres que es comenten a la base ios, en aquesta part es descriuen els membres que depenen dels paràmetres de la plantilla.

Seqüència (entrada)
A causa de la complexitat de la biblioteca iostream, no podrem cobrir-la completament en aquestes lliçons. Tanmateix, destacarem les funcions que més s'utilitzen. En aquesta secció, veurem la classe d'entrada des de diversos angles (istream).

Hem après que l'operador d'extracció (>>) s'utilitzarà per adquirir les dades d'un flux d'entrada.

CORRENT

En el llenguatge de programació C++, el flux d'entrada és gestionat per la classe istream. L'entrada es llegeix i s'entén com una sèrie de caràcters utilitzant aquests objectes de flux d'entrada. L'entrada la gestiona el cin.

Classes de membres

istream::sentry
Una classe que realitza moltes tasques i cada vegada que es realitza un procediment d'entrada. El seu destructor no està obligat a dur a terme cap acció. Tanmateix, les implementacions poden executar tasques d'inici o neteja addicionals al flux compartit per totes les operacions d'entrada mitjançant la creació i la destrucció d'objectes sentinella.

Funcions

istream::gcount
Proporciona el recompte de caràcters que es va obtenir a partir de l'acció d'entrada sense format més recent de l'objecte. Els procediments d'entrada sense format (get, getline, ignore, peek, read, read some, putback i unget) alteren el valor retornat per aquesta funció. Tanmateix, tingueu en compte que trucar a peeks, putback o unget no extreu cap caràcter. Com a resultat, el recompte sempre tornarà 0.

istream::get
El personatge únic treu un personatge del flux. El caràcter s'estableix com a valor de l'argument o es retorna (primera signatura) (segona signatura).

Cadena C: si el caràcter delimitador està present, no s'elimina de la seqüència d'entrada sinó que es manté com el caràcter següent per recuperar-lo del flux si està present.

istream::getline
Elimina els caràcters del flux com a entrada sense format i els desa com a cadena C a la variable 's' fins que el caràcter extret es converteix en el caràcter delimitador o s'han escrit 'n' caràcters a 's'. A més, el mètode deixarà d'extreure caràcters si arriba al final del fitxer.

Internament, la funció crea un objecte abans d'accedir a la seqüència d'entrada. Finalment, mata l'objecte abans de tornar, extreu caràcters del seu objecte de memòria intermèdia de flux associat (suposant que tot estigui en ordre) com si executés un dels seus mètodes membres, sbumpc o sgetc.

istream::ignora
Els caràcters s'agafen de la seqüència d'entrada i es descarten d'un en un fins que s'han extret 'n' caràcters o es comparen iguals amb el delim. A més, si s'arriba al final del fitxer, la funció atura l'extracció de caràcters. La funció estableix la marca 'eofbit' si arriba a aquest punt massa aviat (abans d'extreure n caràcters o descobrir delim).

Abans d'accedir a la seqüència d'entrada, la funció construeix un objecte centinela internament (amb noskipws serà true). Finalment, mata l'objecte sentinella abans de tornar, extreu caràcters del seu objecte de memòria intermèdia de flux associat (suposant que tot estigui en ordre) com si executés un dels seus mètodes membres: sbumpc o sgetc.

istream::operator>>
L'operador d'extracció (>>) aplica aquest operador a un flux d'entrada. Té massa membres com a funció.

Tipus aritmètic

Els caràcters es treuen del flux i s'analitzen seqüencialment per representar un valor del tipus correcte, que després es desa com a valor de 'val'. Abans d'accedir a la seqüència d'entrada, la funció construeix un objecte centinela internament (noskipws serà fals). Si tot surt bé, s'executa num get::get per completar els processos d'extracció i anàlisi mentre es modifiquen els indicadors d'estat intern del flux. Finalment, l'objecte del sentinella es destrueix abans de marxar.

La funció genera internament un objecte centinela abans de llegir la seqüència d'entrada, es considera que realitza una entrada formatada. Finalment, mata l'objecte sentinella abans de tornar, extreu caràcters del seu objecte de memòria intermèdia de flux associat (suposant que tot estigui en ordre) com si executés un dels seus mètodes membres, sbumpc o sgetc.

Manipuladors

S'anomena pf (*this), on pf podria ser un manipulador. Els manipuladors són rutines creades especialment per ser cridades quan s'invoca aquest operador. La seqüència d'entrada no es veu afectada per aquest procediment i no s'extreu cap caràcter.

istream::putback
El caràcter restaurat intenta moure el cursor cap avall un caràcter al flux de manera que l'últim caràcter recuperat del flux es pugui extreure una vegada més mitjançant operacions d'entrada.

Abans d'accedir a la seqüència d'entrada, la funció construeix un objecte centinela internament. A continuació, crida a sputbackc(c) al seu objecte de memòria intermèdia de flux associat (si és bo). Finalment, l'objecte del sentinella es destrueix abans de marxar.

istream::llegir
Llegir un bloc de dades:

Els caràcters 'n' es prenen del flux i després s'emmagatzemen a la matriu a la qual s'assenyala amb 's'. Aquesta funció només replica un bloc de dades sense inspeccionar el contingut de les dades ni afegir un caràcter nul al final.

Dins de la funció, primer es crea un objecte sentinella abans d'accedir a la seqüència d'entrada. Finalment, mata l'objecte sentinella abans de tornar, extreu caràcters del seu objecte de memòria intermèdia de flux associat (suposant que tot estigui en ordre) com si executés un dels seus mètodes membres: sbumpc o sgetc.

El recompte de membres de trucada retornarà el nombre total de caràcters que aquesta funció ha llegit i emmagatzemat correctament.

istream::lectura
Aquesta funció depèn del funcionament intern de l'objecte de memòria intermèdia de flux específic vinculat al flux, el comportament del qual es defineix en gran mesura per la implementació per a les classes estàndard.

Dins de la funció, primer es crea un objecte sentinella abans d'accedir a la seqüència d'entrada. Aleshores (si té èxit), crida a la funció membre de l'objecte del buffer de flux per determinar quants caràcters hi ha ara disponibles abans de cridar 'sbumpc' per extreure fins a aquest nombre de caràcters (o sgetc). Finalment, l'objecte del sentinella es destrueix abans de marxar.

istream::seekg
La posició a la línia d'entrada determina d'on s'extraurà el caràcter següent del flux d'entrada. Abans de llegir la seqüència d'entrada, la funció construeix internament un objecte sentinella. Aleshores (si està bé), fa una de les dues trucades a l'objecte de memòria intermèdia de flux corresponent: pubseekpos (1) o pubseekoff (2), (si n'hi ha). Finalment, oblitera l'element de sentinella i marxa.

istream::sync
Alineeu el buffer d'entrada:

Sincronitza la seqüència d'entrada controlada del buffer de flux enllaçat. La implementació específica de l'objecte del buffer de flux connectat al flux determina les especificitats de l'operació.

istream::tellg
Obteniu la posició de la seqüència d'entrada:

Proporciona la posició del personatge actual al flux d'entrada. Aleshores la funció retorna -1. Si el membre falla, retorna cert.

Retorna rdbuf()->pubseekoff si no (0,cur,in). Finalment, l'objecte del sentinella es destrueix abans de marxar.

istream::unget
Elimina el caràcter:

Intenta moure el cursor cap avall un caràcter al flux de manera que l'últim caràcter recuperat del flux es pugui extreure una vegada més mitjançant operacions d'entrada.

No soci

operador>> (istream)
L'operador d'extracció (>>) proporciona una entrada formatada amb aquesta acció quan s'aplica a un flux d'entrada.

Un caràcter: la seqüència de caràcters en treu el següent caràcter i l'emmagatzema com el valor de 'c'. El procés d'extreure caràcters d'is i emmagatzemar-los en s, com a cadena C, s'atura (si l'amplada no és zero) quan es troba un caràcter d'espai en blanc o s'han extret caràcters (amplada ()-1).

Extracció de rvalue: permet extreure objectes istream de rvalue, que té el mateix resultat que extreure de lvalues: Crida is>>Val.

Exemple 1

En aquest cas, examinaríem com podem obtenir qualsevol valor de l'usuari i després el mostraríem com a resultat a la pantalla.

#inclou
utilitzant espai de noms std ;
int principal ( )
{
int no ;
cout << 'Introduïu un número' ;
menjant >> no ;
cout << 'El valor introduït és:' << no << ' \n ' ;
}

Inclouriem el fitxer de capçalera . A continuació, utilitzarem l'espai de noms 'std' a l'espai de noms estàndard. Anomenaríem la funció main(). Dins d'aquest mètode es declararà una variable anomenada 'no'. El tipus de dades 'int' es representa per a aquesta variable. El terme 'int' és l'abreviatura d'un nombre enter. Després, s'utilitza la declaració 'cout'. Aquesta ordre imprimeix la línia.

L'usuari introduirà qualsevol valor aleatori després que aquest text s'hagi mostrat a la pantalla. Aleshores, s'hauria utilitzat la declaració 'cin'. Aquesta ordre requereix que l'usuari indiqui el valor. El número introduït per l'usuari es desarà en una variable. El valor proporcionat per l'usuari es mostraria a la pantalla mitjançant l'ordre 'cout'.

Exemple 2

En aquest cas, veurem com obtenim qualsevol nom de l'usuari i després el mostraríem a la pantalla com a resultat.

#include
utilitzant espai de noms std ;

int principal ( )

{

char nom [ 125 ] ;
cout << 'Introdueixi el seu nom' << endl ;


menjant >> ws ;

menjant . getline ( nom, 125 ) ;

cout << nom << endl ;

tornar 0 ;

}

Incorporaríem el fitxer de capçalera . A continuació, utilitzarem l'espai de noms estàndard com a 'std'. Invocaríem la funció main(). Dins d'aquest mètode, declararem una variable. Aquesta variable conté el tipus de dades 'char'. Aleshores s'utilitza l'enunciat 'cout'. Aquesta ordre mostra el text 'Introdueix el teu nom' a la pantalla. Després de mostrar aquest text a la pantalla, l'usuari introduiria qualsevol nom. Aleshores, utilitzaríem la declaració 'cin'.

Aquesta ordre pren el valor de l'usuari. El nom proporcionat s'emmagatzemaria en una variable 'ws'. Aquí, una vegada més, utilitzaríem l'ordre 'cin'. Dins d'aquesta ordre, s'està aplicant la funció getline(). Aquesta funció conté el paràmetre que inclou el nom introduït per l'usuari i la longitud del nom. L'ordre 'cout' s'utilitzarà per mostrar el nom proporcionat per l'usuari. Per finalitzar el codi, s'utilitzarà l'ordre 'retorn 0'.

Conclusió

Primer, vam parlar sobre què són les funcions istream de C++. A continuació observem diverses funcions i definicions importants esmentades. En aquest article, hem executat diferents codis que contenen una varietat de funcions istream. En el primer codi, prenem qualsevol número de l'usuari i mostrem aquest número a la pantalla. En el segon, l'usuari va introduir el nom i va imprimir aquest nom a la pantalla.