Migliore risposta
cin.getline () ti consente di inserire una stringa che ha anche spazi bianchi. La sua sintassi è la seguente: cin.getline (nome della stringa, dimensione della stringa); Considera il seguente esempio: Supponi di inserire Hello World sia per str che per strr. #include
int main()
{
char str[100]", strr[100];
cout<<"Enter the strings : ";
cin.getline( str, 100 ); //enter Hello World
cin>>strr; //enter Hello Word.
cout<
cout<
return 0;
}
Questa è la differenza fondamentale. cin non tiene conto degli spazi bianchi nella stringa, mentre cin.getline lo considera.
Risposta
Questo è uno dei problemi più comuni che gli studenti affrontano generalmente durante lutilizzo di getline () funzione.
Quando esegui il programma, digita Delhi e quindi premi il tasto Invio. Questa chiave di invio non è altro che il carattere di nuova riga. I caratteri di spazio bianco, come lo spazio di tabulazione e "\ n", vengono normalmente ignorati (saltati) quando si immette un valore utilizzando cin.
In genere, i caratteri extra vengono lasciati nel flusso di input dopo che linput è presumibilmente completato. Vengono quindi passati alla successiva operazione di input, anche se non sono destinati a tale operazione. Spesso è un carattere di nuova riga che rimane indietro, ma a volte rimangono anche altri caratteri.
Nel tuo programma, questo carattere di nuova riga serve come input per la funzione getline (). Poiché questa funzione ha ricevuto il suo input, non ti consente di inserire il valore. Devi sbarazzarti di questo carattere e quindi il tuo programma funzionerà perfettamente.
Per sbarazzarti di questi caratteri estranei il Viene utilizzata la funzione membro ignore (MAX, DELIM) della classe istream. Legge e rigetta fino a MAX caratteri, incluso il carattere delimitatore specificato. Usa questa funzione prima di chiamare la funzione getline () come:
cin.ignore (1, "\ n");
Poiché, i caratteri extra possono includere anche spazi bianchi (ad esempio, dopo aver digitato Delhi , inserisci dello spazio e poi premi il tasto Invio), invece di 1 sarebbe più sicuro utilizzare 10.
cin.ignore (10, "\ n");
Non preoccuparti della istream class. È dichiarata nel file di intestazione IOSTREAM. Inoltre , getline () è anche una funzione membro della stessa classe istream.