[FondInfo] Re: cin.get()
Eduardo Calabrese
educal a unipr.it
Mer 11 Gen 2006 10:29:14 CET
Ci sono diverse forme del get, che si comportano come funzioni diverse
(function overloading).
Immagino che lei si riferisca alla forma
istream &get( char *buffer, int num );
dove il get ha 2 argomenti, il primo un puntatore a char e il secondo
un numero intero. Ad esempio, rifacendosi all'esempio che lei cita:
cin.get(film.regista,22);
Questa forma legge dal buffer di tastiera fino a 21 caratteri, oppure
fino al newline; ma, se incontra il newline, questo non viene letto da
questa forma del get e rimane nel buffer di tastiera. Occorre
un'altra istruzione per togliere il newline dal buffer (ecco il
significato della funzione acapo!).
Cordiali saluti,
Eduardo Calabrese
On 1/10/06, ..... wrote:
> Egregio professor Calabrese
>
> Le scrivo per avere un breve chiarimento riguardo l'esempio "a750binf.cpp" :
> Durante l'introduzione dei dati dall'esterno attraverso il 'cin.get()', ho
> notato che diviene necessario un accorgimento, in questo caso la funzione
> 'acapo()', poichè l'istruzione 'cin.ge't (e 'cin.getline')
> generano un loop infinito in cui ho l'impressione che il programma riceva
> continuamente in input il newline: '\n'.
> Mi chiedevo perciò, perchè il 'cin.get()' agisce così, cosa riceve dal buffer?
> Oppure è il ciclo while che invia a tutti i 'cin.get()' lo stesso buffer?
> Comunque il rimedio più immediato sarebbe quello di usare un semplice 'cin',
> anche se così facendo non posso leggere delle stringhe contenenti spazi!
> La ringrazio anticipatamente per il tempo rubato e mi scuso se (come probabile)
> ha già spiegato questo esempio a lezione.
>
> Distinti saluti
>
>
>
>
>
--
Eduardo Calabrese
Dip.to di Ingegneria dell'Informazione
Universita' di Parma
Maggiori informazioni sulla lista
FondInformatica