2010-11-02 6 views
-3

Possible en double:
how do I validate user input as a double in C++?C++: Entrer uniquement des entiers/flottants?

Salut à tous. Comment puis-je faire en sorte que l'utilisateur ne peut entrer des nombres entiers/flottants sans indiquer une déclaration de commutateur géant ou quelque chose?

Merci.

+4

Vous devez être plus précis. Peut-être que vous cherchez quelque chose sur les lignes de cette question: http://stackoverflow.com/questions/3273993/how-do-i-validate-user-input-as-a-double-in-c/ – casablanca

Répondre

2
int i; 
std::cin >> i; 
if(!std::cin) throw "bloody user blew it!" 

C'est l'un des aspects les plus fondamentaux de C++. Vous voudrez peut-être obtenir a good introductory C++ book.

+0

Depuis la OP semble poser une question très fondamentale, peut-être qu'il serait préférable de formuler le test comme while (std::cin.fail()) { std::cout << "Bad input, try again"; std::cin >> i;}. Mes principaux points étant (a) ne pas utiliser d'exceptions puisque l'OP pourrait être un étudiant qui apprend juste les bases et (b) utiliser fail() explicitement plutôt que de montrer comment tester le flux directement. – Vatsan

+0

@Vatsan: (a) cette instruction throw est un substitut pour la gestion des erreurs réelles (b) 'fail()' ne retournera pas true si le bit incorrect est défini, alors que '! Strm' le fera. – sbi

+0

opérateur! vs fail() - ce n'était pas ma compréhension - http://www.cplusplus.com/reference/iostream/ios/operatornot/ – Vatsan

Questions connexes