Discussione: C++ e EOF in Windows
View Single Post
Old 26-05-2004, 15:42   #14
dino_sauro00
Senior Member
 
L'Avatar di dino_sauro00
 
Iscritto dal: Feb 2003
Cittą: Pisa - Thessaloniki
Messaggi: 2213
Quote:
Originariamente inviato da /\/\@®¢Ų
Ah, aspetta che forse ho capito !
le due variabili sono degli interi giusto ?
E tu non gli dai il carattere EOF, ma scrivi la stringa EOF al posto del numero.
Se ho indovinato, ho capito dove e' il problema: quando cerchi di leggere una stringa alfanumerica in una variabile numerica, puo' capitare che la lettura vada in "loop". (Piu' correttamente, al primo colpo si blocca, ma poi passa alla lettura successiva dove entra in loop).
Puoi risolvere in diversi modi... il piu' veloce che mi viene in mente (e il meno pulito ), e' quello di catturare il problema sempre con le eccezioni.
Nel codice che ho scritto sopra invece di
Codice:
cin.exceptions( ios_base::eofbit );
scrivi
Codice:
cin.exceptions( ios_base::eofbit | ios_base::failbit | ios_base::badbit );
In questo modo, non appena scrivi del testo invece che un numero, l'esecuzione esce dal ciclo e passa al blocco catch.
Fammi sapere se ti funziona.
GRANDEEEE! Ha funzionato 'sto maledetto! Grazie tante Marco, era esattamente cio' che volevo fargli fare. Le variabili erano efettivamente int. Avrei dovuto usare un altro tipo? Sinceramente quello che inizialmente mi aspettavo era che EOF restituisse -1 alla variabile di controllo e che poi tale variabile porterebbe subito alla fine del ciclo while.
Mi sa che adesso do un'occhiata alle exceptions
Ancora una volta ti ringrazio per il tempo che hai sprecato per aiutarmi. Grazie davvero!

Per cionci:

Grazie anche a te cionci ma non intendevo il SIGSTOP di Linux. Era proprio quello che mi ha detto Marco. Grazie comunque
__________________
AMD Athlon 64 X2 5200+, 4GB DDR2, Asus M2N32-SLI Deluxe, GeForce 8800 GT, 2 Seagate SATA 80GB + 1 Maxtor 160 SATA, SB Live, Pioneer DVD106, Benq DW1640, Asus VH242H
dino_sauro00 č offline   Rispondi citando il messaggio o parte di esso