Funzioni istream C++

Funzioni Istream C



Il termine 'stream' 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 generare azioni su file e dispositivi IO. Queste classi sono progettate per gestire l'input e l'output del programma e hanno funzionalità particolari.

Gerarchia delle classi di flusso

Una classe C++ è composta da metodi necessari per gestire e governare i dati in essa contenuti.

float, doubles e classi sono tipi di dati simili a int. Una variabile univoca con una classe come tipo di dati viene definita oggetto C++. Gli oggetti speciali predefiniti 'cin' e 'cout' hanno varie classi come tipi di dati.







I dati scritti in 'cout' o letti da 'cin' sono esempi di flussi di dati in entrata o in uscita da programmi in C++. Attualmente, stiamo considerando le seguenti quattro classi per questa:



Trasmettilo in streaming
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 si presentano sotto forma di cout e cin.





Se in streaming
È un flusso di file di input.

Di ruscello
È un flusso di file di output. L'ereditarietà è una nozione molto utilizzata nella programmazione orientata agli oggetti, come in C++, dove alcune classi assumono le caratteristiche di altre classi che sono già state create. Le classi degli antenati diventano quindi specializzazioni di se stesse attraverso l'inclusione di nuove funzionalità.



Se la classe di flusso
Un ifstream può essere trattato allo stesso modo di un istream, che è quello che è.

Di classe stream
Allo stesso modo in cui ifstreams funziona, ma con output invece di input, un ofstream è un flusso di file di output. Un ofstream viene utilizzato allo stesso modo di cout dopo essere stato costruito, aperto e verificato per non avere errori.

Classe Io
Da questa classe discendono tutte le classi stream. I flussi di input e output sono di due tipi diversi.

Definisce le parti del flusso che sono indipendenti dallo stato di input o output del flusso nella base ios.

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

Flusso (ingresso)
A causa della complessità della libreria iostream, non saremo in grado di trattarla interamente in queste lezioni. Tuttavia, evidenzieremo le funzioni più utilizzate. In questa sezione, esamineremo la classe di input da una varietà di angolazioni (istream).

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

FLUSSO

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 flusso di input. L'input è gestito dal cin.

Classi membri

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

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 — get, getline, ignore, peek, read, read some, putback e unget — alterano il valore restituito da questa funzione. Tuttavia, tieni presente che chiamare peek, putback o unget non estrae alcun carattere. Di conseguenza, il conteggio restituirà sempre 0.

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

Stringa C: se il carattere di delimitazione è presente, non viene rimosso dalla sequenza di input ma viene mantenuto come carattere successivo per essere recuperato dal flusso se presente.

istream::getline
Rimuove i caratteri dal flusso come input non formattati e li salva come una stringa c nella variabile 's' fino a quando il carattere estratto diventa il carattere di delimitazione o vengono scritti 'n' caratteri su 's'. Inoltre, il metodo interromperà l'estrazione dei 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, estraendo i 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 presi dalla sequenza di input e scartati uno alla volta fino a quando non sono stati eliminati 'n' caratteri o uno è uguale alla 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 sentinella (con noskipws sarà true). Infine, uccide l'oggetto sentinella prima di tornare, estraendo i 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 estratti dal flusso e analizzati in sequenza per rappresentare un valore del tipo corretto, che viene quindi salvato come valore di 'val'. Prima di accedere alla sequenza di input, la funzione costruisce internamente un oggetto sentinella (noskipws sarà false). Se tutto funziona correttamente, viene eseguito num get::get per completare i processi di estrazione e analisi mentre si modificano i flag di stato interni del flusso. L'oggetto sentinella viene infine distrutto prima che se ne vada.

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

Manipolatori

Viene chiamato pf (*this), dove pf potrebbe essere un manipolatore. I manipolatori sono routine create appositamente per essere chiamate quando viene invocato questo operatore. La sequenza di input non è influenzata da questa procedura e non vengono estratti caratteri.

istream::putback
Il carattere ripristinato tenta di spostare il cursore in basso di un carattere nello stream in modo che l'ultimo carattere recuperato dallo stream possa essere nuovamente estratto dalle operazioni di input.

Prima di accedere alla sequenza di input, la funzione costruisce internamente un oggetto sentinella. Quindi chiama sputbackc(c) sul suo oggetto buffer di flusso associato (se valido). L'oggetto sentinella viene infine distrutto prima che se ne vada.

istream::leggi
Leggi un blocco dati:

I caratteri 'n' vengono presi dal flusso e vengono quindi archiviati nell'array a cui punta la 's'. Questa funzione replica semplicemente un blocco di dati senza esaminare il contenuto dei dati o aggiungere un carattere nullo alla fine.

All'interno della funzione, prima di accedere alla sequenza di input viene creato un oggetto sentinella. Infine, uccide l'oggetto sentinella prima di tornare, estraendo i caratteri dall'oggetto buffer di flusso associato (supponendo che tutto sia in ordine) come se eseguisse uno dei suoi metodi membri: sbumpc o sgetc.

Il conteggio dei membri chiamanti restituirà il numero totale di caratteri che questa funzione ha letto e archiviato correttamente.

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

All'interno della funzione, prima di accedere alla sequenza di input viene creato un oggetto sentinella. Quindi (se ha esito positivo), chiama la funzione membro nell'avail dell'oggetto stream buffer per determinare quanti caratteri sono ora disponibili prima di chiamare 'sbumpc' per estrarre fino a quel numero di caratteri (o sgetc). L'oggetto sentinella viene infine distrutto prima che se ne vada.

istream::cerca kg
La posizione nella riga di input determina dove il carattere seguente verrà estratto dal flusso di input. Prima di leggere la sequenza di input, la funzione costruisce internamente un oggetto sentinella. Quindi (se OK), effettua una delle due chiamate all'oggetto buffer di flusso corrispondente: pubseekpos (1) o pubseekoff (2), (se presente). Infine, cancella l'elemento di sentinella e se ne va.

istream::sync
Allinea il buffer di input:

Sincronizza la sequenza di input controllata del buffer di flusso collegato. L'implementazione specifica dell'oggetto stream buffer connesso allo stream determina le specifiche dell'operazione.

istream::raccontare
Ottieni la posizione della sequenza di input:

Fornisce la posizione del personaggio corrente nel flusso di input. La funzione restituisce quindi -1. Se il membro ha esito negativo, restituisce true.

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

istream::unget
Rimuovi carattere:

Cerca di spostare il cursore in basso di un carattere nello stream in modo che l'ultimo carattere recuperato dallo stream possa essere nuovamente estratto dalle operazioni di input.

Non membro

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

Un carattere: la sequenza di caratteri estrae il carattere successivo e lo memorizza come valore di 'c'. Il processo di estrazione di caratteri da is e di memorizzazione in s, come stringa c, si interrompe (se la larghezza non è zero) quando viene rilevato uno spazio vuoto o sono stati estratti (larghezza ()-1) caratteri.

Estrazione di rvalue: abilita l'estrazione da oggetti istream rvalue, che ha lo stesso risultato dell'estrazione da lvalues: chiama is>>Val.

Esempio 1

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

#includi
usando spazio dei nomi std ;
int principale ( )
{
int No ;
cout << 'Per favore inserisci un numero ' ;
mangiare >> No ;
cout << 'Il valore inserito è: ' << No << ' \n ' ;
}

Includeremmo il file di intestazione . Successivamente, utilizzeremo lo spazio dei nomi 'std' nello spazio dei nomi standard. Chiameremmo la funzione main(). Una variabile denominata 'no' verrà 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'istruzione 'cout'. Questo comando stampa la riga.

L'utente inserirà qualsiasi valore casuale dopo che questo testo è stato visualizzato sullo schermo. Quindi, sarebbe stata utilizzata l'affermazione 'cin'. Questo comando richiede all'utente di indicare il valore. Il numero inserito dall'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 ottenere qualsiasi nome dall'utente e quindi mostrarlo sullo schermo come risultato.

#includi
usando spazio dei nomi std ;

int principale ( )

{

car nome [ 125 ] ;
cout << 'Inserisci il tuo nome' << fine ;


mangiare >> v ;

mangiare . getline ( nome, 125 ) ;

cout << nome << fine ;

Restituzione 0 ;

}

Incorporeremmo il file di intestazione . Successivamente, utilizzeremo lo spazio dei nomi standard come 'std'. Invocheremmo la funzione main(). All'interno di questo metodo, dichiareremo una variabile. Questa variabile contiene il tipo di dati 'char'. Quindi viene utilizzata l'affermazione 'cout'. Questo comando mostra il testo 'Inserisci il tuo nome' sullo schermo. Dopo aver visualizzato questo testo sullo schermo, l'utente deve inserire qualsiasi nome. Quindi, utilizzeremmo l'istruzione 'cin'.

Questo comando prende il valore dall'utente. Il nome fornito verrebbe memorizzato in una variabile 'ws'. Qui, ancora una volta, utilizzeremmo 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 'restituisci 0'.

Conclusione

In primo luogo, abbiamo parlato di cosa sono le funzioni istream di C++. Quindi osserviamo diverse funzioni e definizioni importanti menzionate. In questo articolo, abbiamo eseguito diversi codici 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.