Amélioration de la validation des entrées : accepter uniquement les entrées numériques
Lorsque vous utilisez cin pour recevoir des entrées utilisateur, il est crucial de garantir l'exactitude des données, en particulier lors du traitement avec des valeurs numériques. Le code fourni rencontre un problème où les caractères non numériques, tels que « x » dans « 1x », sont ignorés, ce qui peut conduire à des résultats incorrects.
Une solution robuste
Pour résoudre ce problème, une approche plus approfondie consiste à utiliser std::getline et std::string pour capturer l'intégralité de la ligne d'entrée, y compris les caractères non numériques. L'extrait de code amélioré suivant illustre cette approche :
#include <string> #include <sstream> double enter_number() { double number; std::string line; while (std::getline(std::cin, line)) { std::stringstream ss(line); if (ss >> number) { if (ss.eof()) { // Success break; } } std::cout << "Invalid input" << std::endl; std::cout << "Try again" << std::endl; } return number; }
Expliquer l'implémentation
Conclusion
Avec cette approche améliorée, toute tentative de saisie de caractères non numériques sera signalée comme une saisie non valide et l'utilisateur sera invité à entrez à nouveau un numéro valide. Cette solution résout efficacement le problème présenté dans le code d'origine, garantissant que seules les entrées numériques valides sont acceptées, quels que soient les caractères non numériques supplémentaires dans la ligne de saisie.
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!