Funzioni di C ++ istream

Funzioni di C ++ istream
Il termine "flusso" in C ++ descrive il flusso di caratteri tra il thread del programma e I/O. Le classi di flusso C ++ sono necessarie per inserire e produrre azioni su dispositivi e file IO. Queste classi sono progettate per gestire l'input e l'output del programma e hanno una funzionalità particolare.

Gerarchia di classe di streaming

Una classe C ++ è costituita da metodi necessari per gestire e governare i dati che contiene.

Float, doppio e classi sono tipi di dati simili a int. Una variabile unica con una classe come tipo di dati viene definita oggetto C ++. Gli oggetti speciali pre-specificati "CIN" e "Cout" hanno varie classi come tipi di dati.

I dati scritti su "cout" o letto da "CIN" sono esempi di flussi di dati dentro o fuori dai programmi in C++. Attualmente, stiamo prendendo in considerazione le seguenti quattro classi per questo:

Istream
Qualsiasi scopo può essere servito da questo flusso di input. Un'illustrazione di un istream è CIN.

Ostream
È un flusso di output con diversi usi. Gli ostream sono disponibili nelle forme di Cout e CIN.

Se flusso
È un flusso di file di input.

Di flusso
È un flusso di file di output. L'eredità è un'idea che è fortemente utilizzata nella programmazione orientata agli oggetti, come in C ++, in cui alcune classi assumono le caratteristiche di altre classi che sono già state create. Le classi antenate diventano quindi specializzate di se stesse attraverso l'inclusione di nuove caratteristiche.

Se classe di streaming
Un Ifstream può essere trattato allo stesso modo di un istream, che è quello che è.

Della classe di flusso
Allo stesso modo in cui le funzioni Ifstreams, ma con output anziché input, un Of Stream è un flusso di file di output. Un Of Stream viene utilizzato allo stesso modo di Cout dopo essere stato costruito, aperto e verificato per non avere errori.

Classe iOS
Da questa classe, tutte le classi di streaming sono scese. I flussi di input e output sono due tipi diversi.

Definisce le parti del flusso che sono indipendenti dall'ingresso o dallo stato di output del flusso nella base iOS.

A differenza dei membri discussi nella base iOS, i membri che dipendono dai parametri del modello sono descritti in questa parte.

Stream (input)
A causa della complessità della biblioteca iostream, non saremo in grado di coprirla interamente in queste lezioni. Tuttavia, evidenzieremo le funzioni che vengono utilizzate di più. In questa sezione, esamineremo la classe di input da una varietà di angoli (istream).

Abbiamo appreso che l'operatore di estrazione (>>) verrà utilizzato per acquisire i dati da un flusso di input.

Istream

Nel linguaggio di programmazione C ++, il flusso di input è gestito dalla classe istream. L'input viene letto e inteso come una serie di caratteri che utilizzano questi oggetti di flusso di input. L'ingresso è gestito dalla CIN.

Lezioni di membro

Istream :: Sentry
Una classe che svolge molte attività e ogni volta viene eseguita una procedura di input. Il suo distruttore non è tenuto a compiere alcuna azione. Tuttavia, le implementazioni possono eseguire ulteriori attività di avvio o di pulizia sul flusso condiviso da tutte le operazioni di input utilizzando la creazione e la distruzione degli oggetti Sentry.

Funzioni

istream :: gcount
Fornisce il conteggio dei caratteri ottenuto dall'azione di input non formattata più recente dell'oggetto. Le procedure di input non formattate: ottenere, ottenere, ignorare, sbirciare, leggere, leggere alcuni, rimbalzare e non altera il valore restituito da questa funzione. Tuttavia, tieni presente che chiamare sbirciai, rimbalzi o incomprensioni non estrae alcun personaggio. Di conseguenza, il conteggio restituirà sempre 0.

istream :: get
Il personaggio singolo toglie un personaggio fuori dal flusso. Il personaggio è impostato come valore dell'argomento o restituito (prima firma) (seconda firma).

C String: se è presente il carattere delimitante, non viene rimosso dalla sequenza di input mantenuta come il seguente carattere da recuperare dal flusso se è presente.

istream :: getline
Rimuove i caratteri dal flusso come input non formattato e li salva come una fi-string nella variabile "s" fino a quando il carattere estratto diventa il carattere delimitante o i caratteri "n" sono stati scritti in "s". Inoltre, il metodo smetterà di estrarre caratteri se raggiunge la fine del file.

Internamente, la funzione crea un oggetto prima di accedere alla sequenza di input. Infine, uccide l'oggetto prima di tornare, estrarre caratteri dall'oggetto buffer di flusso associato (supponendo che tutto sia in ordine) come se eseguisse uno dei suoi metodi membri, SBumpc o SgetC.

istream :: ignora
I caratteri vengono prelevati dalla sequenza di input e scartati uno alla volta fino a quando non sono stati eliminati i caratteri "n" o uno si confronta pari a Delim. Inoltre, se viene raggiunta la fine del file, la funzione interrompe l'estrazione dei caratteri. La funzione imposta il flag "eofbit" se raggiunge questo punto troppo presto (prima di estrarre n caratteri o scoprire delim).

Prima di accedere alla sequenza di input, la funzione costruisce internamente un oggetto Sentry (con NoskipWS). Infine, uccide l'oggetto Sentry prima di tornare, estrarre caratteri dall'oggetto buffer di flusso associato (supponendo che tutto sia in ordine) come se eseguisse uno dei suoi metodi membri: SBumpc o SgetC.

istream :: operatore >>
L'operatore di estrazione (>>) applica questo operatore a un flusso di input. Ha troppi membri come funzione.

Tipo aritmetico

I caratteri vengono eliminati dal flusso e analizzati in sequenza per rappresentare un valore del tipo giusto, che viene quindi salvato come valore di "val". Prima di accedere alla sequenza di input, la funzione costruisce internamente un oggetto Sentry (NOSKIPWS sarà falso). Se tutto controlla bene, esegue Num Get :: Commetti i processi di estrazione e analisi modificando le flag di stato interno del flusso. L'oggetto Sentry viene infine distrutto prima che se ne vada.

La funzione genera internamente un oggetto Sentry prima di leggere la sequenza di input, viene visualizzata come eseguire input formattato. Infine, uccide l'oggetto Sentry prima di tornare, estraendo caratteri dall'oggetto buffer del flusso associato (supponendo che tutto sia in ordine) come se eseguisse uno dei suoi metodi membri, SBumpc o SgetC.

Manipolatori

Il pf (*questo) si chiama, dove PF potrebbe essere un manipolatore. I manipolatori sono routine create in particolare per essere chiamate quando viene invocato questo operatore. La sequenza di input non è influenzata da questa procedura e non vengono estratti i caratteri.

istream :: rimbalzo
Il personaggio ripristinato cerca di spostare il cursore un personaggio nel flusso in modo che l'ultimo personaggio recuperato dal flusso possa essere nuovamente estratto dalle operazioni di input.

Prima di accedere alla sequenza di input, la funzione costruisce un oggetto Sentry internamente. Chiama quindi sputbackc (c) sull'oggetto buffer di flusso associato (se buono). L'oggetto Sentry viene infine distrutto prima che se ne vada.

istream :: leggi
Leggi un blocco di dati:

I personaggi 'n' vengono prelevati dal flusso e vengono quindi archiviati nell'array che è indicato da "s". Questa funzione replica semplicemente un blocco di dati senza ispezionare il contenuto dei dati o aggiungere un carattere nulla alla fine.

All'interno della funzione, un oggetto Sentry viene creato per la prima volta prima che si accede alla sequenza di input. Infine, uccide l'oggetto Sentry prima di tornare, estrarre caratteri dall'oggetto buffer di flusso associato (supponendo che tutto sia in ordine) come se eseguisse uno dei suoi metodi membri: SBumpc o SgetC.

Conteggio dei membri chiamati restituirà il numero totale di caratteri questa funzione ha letto e memorizzata correttamente.

istream :: leggi
Questa funzione dipende dal funzionamento interno dell'oggetto buffer di flusso specifico collegato al flusso, il cui comportamento è in gran parte definito dall'implementazione per le classi standard.

All'interno della funzione, un oggetto Sentry viene creato per la prima volta prima che si accede alla sequenza di input. Quindi (in caso di successo), chiama la funzione membro nell'oggetto del buffer di flusso per determinare quanti caratteri sono ora disponibili prima di chiamare "SBumpC" per estrarre fino a quel numero di caratteri (o SGETC). L'oggetto Sentry viene infine distrutto prima che se ne vada.

Istream :: Seekg
La posizione nella linea di input determina dove il seguente carattere verrà estratto dal flusso di input. Prima di leggere la sequenza di input, la funzione costruisce internamente un oggetto Sentry. Quindi (se OK), effettua una delle due chiamate all'oggetto buffer di flusso corrispondente: pubseekpos (1) o pubseekoff (2), (se presente). Infine, cancella l'articolo della sentinella e parte.

istream :: sync
Allinea il buffer di input:

Porta la sequenza di input controllata dal buffer del flusso collegato in sincronizzazione. L'implementazione specifica dell'oggetto buffer del flusso collegato al flusso determina le specifiche dell'operazione.

Istream :: Tellg
Ottieni la posizione della sequenza di input:

Fornisce la posizione del carattere corrente nel flusso di input. La funzione restituisce quindi -1. Se il membro fallisce, restituisce vero.

Restituisce rdbuf ()-> pubseekoff se non (0, cur, in). L'oggetto Sentry viene infine distrutto prima che se ne vada.

istream :: unget
Rimuovi il carattere:

Cerca di spostare il cursore verso il basso un personaggio nel flusso in modo che l'ultimo personaggio recuperato dal flusso possa essere nuovamente estratto dalle operazioni di input.

Non membro

Operatore >> (istream)
L'operatore di estrazione (>>) fornisce input formattati con questa azione quando applicato a un flusso di input.

Un personaggio: la sequenza del personaggio ti toglie il personaggio successivo e lo memorizza come valore di "C". Il processo di estrazione di caratteri da è e archiviarli in S, come c-string, si ferma (se la larghezza non è zero) quando si incontra un personaggio di spazi bianchi o sono stati estratti i caratteri (larghezza () -1).

Estrazione di rValue: abilita l'estrazione da oggetti istream rValue, che ha lo stesso risultato dell'estrazione di lValues: chiama è >> val.

Esempio 1

In questo caso, esamineremo come possiamo ottenere qualsiasi valore dall'utente e quindi visualizzarlo come risultato sullo schermo.

#includere
Utilizzo dello spazio dei nomi std;
int main ()

int no;
cout<<"Please enter a number ";
CIN >> NO;
cout<<"The entered value is: " << no << "\n";

Includeremmo il file di intestazione. Successivamente, useremo lo spazio dei nomi "std" nello spazio dei nomi standard. Chiameremmo la funzione main (). Una variabile denominata "no" sarà dichiarata all'interno di questo metodo. Il tipo di dati "int" è rappresentato per questa variabile. Il termine "int" è l'abbreviazione di un numero intero. Successivamente, viene utilizzata l'affermazione "cout". Questo comando stampa la riga.

L'utente inserisce qualsiasi valore casuale dopo che questo testo è stato visualizzato sullo schermo. Quindi, la dichiarazione "CIN" sarebbe stata utilizzata. Questo comando richiede all'utente di indicare il valore. Il numero inserito dell'utente verrebbe salvato in una variabile. Il valore fornito dall'utente verrebbe visualizzato sullo schermo utilizzando il comando 'cout'.

Esempio 2

In questo caso, vedremmo come otteniamo qualsiasi nome dall'utente e poi lo mostriamo sullo schermo come risultato.

#includere
Utilizzo dello spazio dei nomi std;
int main ()

Nome char [125];
cout << "Enter your name" << endl;
CIN >> WS;
Cin.getline (nome, 125);
cout << name << endl;
restituzione 0;

Incorporeremmo il file di intestazione . Successivamente, utilizzeremo lo spazio dei nomi standard come "std". Vorremmo invocare la funzione principale (). All'interno di questo metodo, dichiareremo una variabile. Questa variabile contiene il tipo di dati "char". Quindi viene impiegata la dichiarazione "cout". Questo comando mostra il testo "Immettere il tuo nome" sullo schermo. Dopo aver visualizzato questo testo sullo schermo, l'utente immetterebbe qualsiasi nome. Quindi, useremmo l'affermazione "CIN".

Questo comando prende il valore dall'utente. Il nome fornito verrebbe archiviato in una variabile "WS". Qui, ancora una volta, useremmo il comando "CIN". All'interno di questo comando, viene applicata la funzione getline (). Questa funzione contiene il parametro che include il nome inserito dall'utente e la lunghezza del nome. Il comando 'cout' verrà utilizzato per mostrare il nome fornito dall'utente. Per terminare il codice, verrà utilizzato il comando 'return 0'.

Conclusione

Innanzitutto, abbiamo parlato di ciò che è C ++ Funzioni istream. Quindi osserviamo diverse funzioni e definizioni importanti menzionate. In questo articolo, abbiamo eseguito codici diversi che contengono una varietà di funzioni ISTREAM. Nel primo codice, prendiamo qualsiasi numero dall'utente e visualizziamo quel numero sullo schermo. Nel secondo, l'utente ha inserito il nome e stampato quel nome sullo schermo.