首頁 >後端開發 >C++ >如何在 C 中使用'cin”實現可靠的輸入驗證?

如何在 C 中使用'cin”實現可靠的輸入驗證?

Linda Hamilton
Linda Hamilton原創
2024-12-29 04:51:09286瀏覽

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

比較:

兩種方法都實現了輸入驗證的目標,但替代方法具有一定的優勢:

  • 更短、更簡潔:消除了錯誤的需要flag.
  • 對忽略的字符沒有限制: 使用numeric_limits::max() 忽略所有剩餘字符,直到遇到換行符,而不是任意值80。
  • 增強錯誤處理的潛力:如果需要,您可以在內部單獨處理不同類型的輸入錯誤

結論:

雖然原始循環是驗證輸入的函數式方法,但許多 C程式設計師更喜歡替代方法,因為它的簡單性和靈活性。透過刪除不必要的變數並使用標準庫函數,它為輸入驗證提供了更精簡、更有效率的解決方案。

以上是如何在 C 中使用'cin”實現可靠的輸入驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn