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

C の `cin` を使用して堅牢な入力検証を実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-29 04:51:09
オリジナル
267 人が閲覧しました

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

C の cin を使用した優れた入力検証ループ

C の初心者として、効果的な入力検証手法を理解することは非常に重要です。これは、標準入力ストリーム cin を使用する場合に特に重要です。この記事では、ユーザー入力を検証するための一般的なループベースのアプローチを検討し、よりクリーンで簡潔であると考えられる代替アプローチに焦点を当てます。

元のループ:

構築した入力検証ループは、do-while ループを使用して、ユーザーに入力を繰り返し要求し、エラー:

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);
ログイン後にコピー

代替アプローチ:

代替アプローチには、for ループを使用し、ループ内のエラーについて cin 入力ストリームをチェックすることが含まれます:

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');
    }
}
ログイン後にコピー

比較:

両方のアプローチ入力検証の目的は達成できますが、代替アプローチには次の利点があります。

  • より短く、より簡潔: エラー フラグが不要になります。
  • 無視される文字に制限なし: numeric_limits::max() を使用して無視します任意の値 80 ではなく、改行が出現するまでの残りのすべての文字。
  • エラー処理の拡張の可能性: 必要に応じて、ループ内でさまざまなタイプの入力エラーを個別に処理できます。 .

結論:

元のループは入力を検証するための機能的な方法ですが、代替アプローチは、そのシンプルさと柔軟性により多くの C プログラマに好まれています。不要な変数を削除し、標準ライブラリ関数を使用することにより、入力検証のためのより合理化された効率的なソリューションが提供されます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート