2016-06-28 6 views
-2

Ich habe den folgenden Code:Überlastung >> in der Klasse mit instream

class someclass 
{ 
    private : 
    unsinged char a; 
    public : 
     ... 
} 

I

std::istream& operator>>(std::istream &in, someclass &x) 
{ 
    in>>x.a; 
    return in; 
} 

int main() 
{ 
    someclass test; 
std::cin>>test; 
return 0; 
} 

Mein Problem verwenden wollen, ist, dass, als ein Benutzer, ich möchte eine ganze Zahl einzufügen zwischen 0-255. Es akzeptiert jedoch nur einzelne Zeichen. Wie soll ich es nur auf ganze Zahlen "werfen"?

Vielen Dank.

Grüße.

Antwort

0

Wie soll ich es nur auf ganze Zahlen "werfen"?

eine temporäre ganze Zahl für die Eingabe verwenden, dann:

std::istream& operator>>(std::istream &in, someclass &x) 
{ 
    int temp; 
    if(!(in>>temp) || temp < 0 || temp > 255) 
     { throw std::runtime_error("Invalid input"); } 
    x.a = (unsigned char)temp; 
    return in; 
}