Créer des nombres en lecture seule avec cin
Appliquer la saisie numérique à l'aide de cin peut présenter des défis, en particulier lors de la gestion de types d'entrée mixtes. Cet article étudie une solution pour garantir que cin n'accepte que les valeurs numériques.
Dans le code fourni, les boucles while tentent de rectifier les entrées invalides en ignorant les caractères non numériques. Cependant, cette méthode est confrontée à des limites lorsqu'elle traite plusieurs entrées.
Solution : Utiliser std::getline et std::string
Pour surmonter cet obstacle, nous pouvons utiliser une approche plus complète :
Convertissez la chaîne en double à l'aide de std::stringstream :
Valider la conversion :
Voici un exemple d'implémentation :
#include <sstream> #include <string> int main() { std::string line; double d; while (std::getline(std::cin, line)) { std::stringstream ss(line); if (ss >> d) { if (ss.eof()) { // Success break; } } std::cout << "Error!" << std::endl; } std::cout << "Finally: " << d << std::endl; }
Cette solution garantit que les nombres entiers et les nombres à virgule flottante sont traités correctement , les caractères non numériques étant complètement supprimés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!