PDA

View Full Version : overloading cin e cout


aronne
25-01-2002, 14:35
Ciao,

devo leggere i dati di una classe (che sono cognome,nome,data di nascita) da tastiera o da file.
Leggendo da tastiera vengono stampate delle stringhe (ad es.:"Nome : ").
Non voglio che queste stringhe vengano stampate se leggo da file.

Ho provato con

ifstream in;
....
if(cin==in) cout << ...

ma non funziona (ogni volta un risultato diverso).

come posso riuscire a distinguere se l'operatore di input ( o output) è riferito a lettura da tastiera o da file?

Grazie:confused:

Ikitt
25-01-2002, 16:47
Originariamente inviato da aronne
[...]
come posso riuscire a distinguere se l'operatore di input ( o output) è riferito a lettura da tastiera o da file?


Premesso che il mio (gia' scarso) C++ e' arrugginito...
Ma std::cin, std::cout e std::cerr non sono SEMPRE collegati al terminale? Se dei dati provengono da questi stream, e' ovvio che vengono o sono diretti al terminale...
no?

Poix81
25-01-2002, 19:33
Neache io soprrei come fare !!!

Ciao ci si sente per telefono.

/\/\@®¢Ø
25-01-2002, 23:54
Ciao !
Cosa intendi dire con "ogni volta un risultato diverso" ? In teoria dovrebbe funzionare come hai scritto tu :confused:

/\/\@®¢Ø
25-01-2002, 23:59
in alternativa comunque puoi fare anche cosi':

if( cin.rdbuf() == in.rdbuf() ) ...

in pratica confronti i puntatori ai buffer, che ovviamente coincideranno se e solo e in e' cin stesso.
Un trucco un po' sporco , ma dovrebbe funzionare nel tuo caso ;)

aronne
26-01-2002, 14:14
Grazie a tutti.
Problema risolto.

Funzionava anche con (cin==in) il problema è che quando lanciavo il programma e caricavo i dati ( con : main < input.d) sbagliavo. Il programma si aspettava di trovare tutti i dati in input.d e così non era ...

Grazie ancora. :D