di zello » 20/09/02 08:28
int a=-1;
do
{
std::cin>>a;
}while(a==-1);
Se l'estrattore non riesce a convertire in un intero, non varia il valore della variabile estratta.
Ovviamente, puoi anche ragionare alla java e fare il throw di una eccezione.
x shellylost
[quote]
...non so come funza il C++ ma se si aspetta un int e te gli passi un char non fa un casting implicito usando il codice ascii?
[quote]
In linea di massima, sì:
int a=4;
char c='a';
a+=c; //male che vada ti da un warning, ma non credo.
Ma in questo caso la funzione chiamata
std::istream& operator>>(std::istream& is,int& a);
'sa' che deve convertire un mucchio di caratteri che rappresenta un numero in questo numero.
E poi dai, shelly, è ora di imparare il C++ (ammenoché tu non voglia farti di marketing con il c#), non c'è nulla in grado di procurarti dei così bei mal di testa (apprezzo particolarmente le classi template e l'overloading gli operatori di conversione, ma se non hai mai neanche usato il c l'approccio con i puntatori e - meglio ancora - con i puntatori a puntatori sarà *fantastico*). E poi, siccome il C++ è passabilmente complesso, non c'è un compilatore che sia affidabile al 100% - e ti trovi, dopo aver scritto codice perfettamente standard, con errori del tipo "Internal compiler error". A volte invece compila perfettamente, ma l'eseguibile fa cose strane (tipo va una volta su cinque, funziona in debug e non in release, e così via).
Con java non c'è gusto. Va praticamente sempre (a dire la verità, odio proprio la mancanza di templates - possibile che ogni volta che tiro fuori qualcosa da un Vector mi tocca di fare un cast?)...
Ciao
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...