ホームページ >バックエンド開発 >C++ >C で堅牢な入力検証ループを実装するにはどうすればよいですか?

C で堅牢な入力検証ループを実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-14 00:31:17239ブラウズ

How to Implement Robust Input Validation Loops in C  ?

cin - C を使用した適切な入力検証ループ

入力検証

入力を使用する場合ユーザーにとって、入力の検証はデータの整合性を確保し、エラーを防ぐために非常に重要です。効果的な方法の 1 つは、有効な入力が提供されるまでループを使用してユーザーに繰り返しプロンプトを表示することです。

提案されたループ

質問は入力検証用のループを示しています:

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);

一般的なアプローチ

ループ中

例外処理

例外処理は、入力エラーを処理するためのより直接的な方法を提供します。 isstringstream ブロックと try-catch ブロックを使用すると、エラー コードに依存せずに入力を検証し、エラーを処理できます。例:

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;
}

検証付き無限ループ

もう 1 つのアプローチは、入力を継続的に検証し、必要に応じてユーザーに修正を求める無限ループを使用することです。

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');
    }
}

の選択アプローチ

最適なアプローチは、アプリケーションの特定の要件によって異なります。例外処理はより現代的で堅牢な方法ですが、無限ループは入力検証を処理するためのシンプルかつ直接的な方法を提供します。

以上がC で堅牢な入力検証ループを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。