Maison >développement back-end >C++ >Comment implémenter des boucles de validation d'entrée robustes en C ?

Comment implémenter des boucles de validation d'entrée robustes en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 00:31:17239parcourir

How to Implement Robust Input Validation Loops in C  ?

Bonne boucle de validation d'entrée utilisant cin - C

Validation d'entrée

Lorsque vous travaillez avec une entrée des utilisateurs, la validation des entrées est cruciale pour garantir l’intégrité des données et éviter les erreurs. Une méthode efficace consiste à utiliser une boucle pour inviter l'utilisateur à plusieurs reprises jusqu'à ce qu'une entrée valide soit fournie.

La boucle proposée

La question présente une boucle pour la validation des entrées :

int taxableIncome;
int error;

// input validation loop
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);

Approche commune

Bien que la boucle fonctionne, il existe des méthodes plus courantes et sans doute de meilleures façons d'aborder la validation des entrées.

Gestion des exceptions

La gestion des exceptions fournit un moyen plus direct de gérer les erreurs de saisie. En utilisant les blocs istringstream et try-catch, nous pouvons valider les entrées et gérer les erreurs sans nous fier aux codes d'erreur. Par exemple :

int taxableIncome;
string input;

while (true)
{
    cout << "Please enter in your taxable income: ";
    getline(cin, input);
    istringstream iss(input);
    if (!(iss >> taxableIncome))
    {
        cout << "Please enter a valid integer" << endl;
        continue;
    }
    break;
}

Boucle infinie avec validation

Une autre approche consiste à utiliser une boucle infinie qui valide en permanence les entrées et invite l'utilisateur à apporter les corrections nécessaires.

int taxableIncome;

while (true)
{
    cout << "Please enter in your taxable income: ";
    if (cin >> taxableIncome)
    {
        break;
    }
    else
    {
        cout << "Please enter a valid integer" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
}

Choix de l'approche

La meilleure approche dépend sur les exigences spécifiques de la demande. La gestion des exceptions est une méthode plus moderne et plus robuste, tandis que la boucle infinie fournit un moyen simple et direct de gérer 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!

Déclaration:
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