Maison > développement back-end > C++ > Comment puis-je implémenter une validation d'entrée robuste avec `cin` en C ?

Comment puis-je implémenter une validation d'entrée robuste avec `cin` en C ?

Linda Hamilton
Libérer: 2024-12-29 04:51:09
original
268 Les gens l'ont consulté

How Can I Implement Robust Input Validation with `cin` in C  ?

Bonne boucle de validation d'entrée avec cin en C

En tant que débutant en C, comprendre les techniques efficaces de validation d'entrée est crucial. Ceci est particulièrement important lors de l’utilisation du flux d’entrée standard cin. Dans cet article, nous explorerons une approche commune basée sur une boucle pour valider les entrées de l'utilisateur et mettrons en évidence une approche alternative qui est souvent considérée comme plus propre et plus concise.

Boucle originale :

La boucle de validation d'entrée que vous avez construite utilise une boucle do-while pour demander à plusieurs reprises à l'utilisateur une entrée et vérifier erreurs :

int taxableIncome;
int error;

do {
    error = 0;
    cout << "Please enter in your taxable income: ";
    cin >> taxableIncome;
    if (cin.fail()) {
        cout << "Please enter a valid integer" << endl;
        error = 1;
        cin.clear();
        cin.ignore(80, '\n');
    }
} while (error == 1);
Copier après la connexion

Approche alternative :

Une approche alternative consiste à utiliser une boucle for et à vérifier le flux d'entrée cin pour détecter les erreurs dans la boucle :

int taxableIncome;

for (;;) {
    cout << "Please enter in your taxable income: ";
    if (cin >> taxableIncome) {
        break; // Valid input received
    } else {
        cout << "Please enter a valid integer" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
}
Copier après la connexion

Comparaison :

Les deux approches atteignent l'objectif de validation des entrées, mais la L'approche alternative offre certains avantages :

  • Plus courte et plus concise :Élimine le besoin d'un indicateur d'erreur.
  • Aucune limite sur les caractères ignorés : Utilise numeric_limits::max() pour ignorer tous les caractères restants jusqu'à ce qu'une nouvelle ligne soit rencontrée, au lieu d'une valeur arbitraire de 80.
  • Potentiel d'amélioration de la gestion des erreurs : Si vous le souhaitez, vous pouvez gérer différents types d'erreurs de saisie séparément dans la boucle.

Conclusion :

Bien que la boucle originale soit un moyen fonctionnel de valider les entrées, l'approche alternative est préférée par de nombreux programmeurs C en raison de sa simplicité. et la flexibilité. En supprimant les variables inutiles et en utilisant les fonctions de bibliothèque standard, il fournit une solution plus simple et plus efficace pour la validation des entrées.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal