Cosè cin.ignore () ea cosa serve?


Migliore risposta

Qui chiarirai di più con Cin

Utilizzo , cin.get , cin.getline e cin. ignora

Utilizzando loperatore >> (con cin)

Il> Loperatore> può essere utilizzato quando si desidera semplicemente leggere i successivi caratteri non spazi vuoti inseriti dallutente in un carattere o in un array di caratteri. Qualsiasi carattere stampabile che segue il primo spazio verrà ignorato e non verrà memorizzato nella variabile. Non usa unistruzione come

cin >> UserExplanation;

se, ad esempio, desideri per ottenere una frase intera dallutente che include spazi. In tal caso, sarebbe meglio utilizzare le funzioni membro cin get o getline .

Domanda : un terminatore nullo verrà automaticamente memorizzato alla fine della matrice di caratteri, UserExplanation?

Uso di cin.get

La funzione get member non formattata funziona come loperatore >> con due eccezioni. Innanzitutto, la funzione get include caratteri di spazio vuoto , mentre lestrattore esclude lo spazio bianco quando è impostato il flag ios :: skipws (impostazione predefinita). In secondo luogo, è meno probabile che la funzione get causi lo svuotamento di un flusso di output legato (cout, ad esempio).

Una variazione della funzione get specifica un indirizzo di buffer e il numero massimo di caratteri da leggere. Ciò è utile per limitare il numero di caratteri inviati a una variabile specifica, come mostra questo esempio:

#include

void main()

{

char line[25];

cout << " Type a line terminated by carriage return\n>";

cin.get( line, 25 );

cout << " " << line;

}

In questo esempio, puoi digitare fino a 24 caratteri e un carattere di terminazione. Eventuali caratteri rimanenti possono essere estratti in seguito.

Utilizzo di cin.getline

La funzione membro getline è simile alla ottenere la funzione. Entrambe le funzioni consentono un terzo argomento che specifica il carattere di terminazione per linput. Il valore predefinito è il carattere di nuova riga. Entrambe le funzioni riservano un carattere per il carattere di terminazione richiesto . Tuttavia, get lascia il carattere di terminazione nello stream e getline rimuove il carattere di terminazione.

Lesempio seguente specifica un carattere di terminazione per linput stream:

#include

void main()

{

char line[100];

cout << " Type a line terminated by "t"" << endl;

cin.getline( line, 100, "t" );

cout << line;

}

Utilizzo di cin.ignore

cin.ignore (int nCount = 1, int delim = EOF); ​​

Parametri

nCount - Il numero massimo di caratteri da estrarre. delim - Il carattere delimitatore (il valore predefinito è EOF).

Osservazioni

Estrae e scarta fino a nCount caratteri. Lestrazione si interrompe se viene estratto il delimitatore delimitatore o viene raggiunta la fine del file. Se delim = EOF (il valore predefinito), solo la condizione di fine file causa la terminazione. Il carattere delimitatore viene estratto.

Risposta

cin.ignore () è una funzione predefinita che ignora / cancella uno o più caratteri dal buffer di input.

Prerequisiti: 1. cin considera uno spazio bianco, ad esempio " ", " \ t ", " \ n " come carattere delimitatore.

2. Quando leggi qualsiasi cosa dal dispositivo di input standard, tastiera qui, prima va nel buffer di input. Il buffer di input è una posizione che contiene tutte le informazioni in arrivo prima continua alla CPU per lelaborazione.

Il problema: 1. Supponi di voler leggere una "stringa" dallutente. char myname [10];

2. In qualche modo finisci per usare cin, invece di cin.getline () cin >> myname;

3. Digito "ABC", quindi premo il tasto Invio. occupa ABC e considera il seguente "\ n" come delimetro.Di conseguenza, "\ n" non viene letto e rimane nel buffer di input.

4. Quindi qui, cin.ignore () ignorerà questi caratteri non letti che sono rimasti nel buffer di input.

La soluzione: Se vuoi evitare situazioni, tieni presente solo di non usare cin per inserire stringhe. e tada, problema risolto !!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *