一個常見的程式設計任務是驗證使用者輸入以確保其符合特定條件。其中一個標準是確保輸入是有效的浮點數,特別是雙精確度數。以下是如何在 C 中進行此驗證:
double x; while (1) { cout << ">"; if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; } }
此程式碼透過嘗試從標準輸入讀取雙精確度值來提供基本驗證。如果成功讀取輸入,則繼續執行程式。否則,會顯示錯誤訊息。
但是,上述程式碼可能會導致即使輸入有效,程式也會不斷輸出錯誤訊息。這是因為 cin>> x 行因無效輸入而失敗,並在輸入流中留下錯誤標誌集。要解決此問題,需要在偵測到無效輸入後清除錯誤狀態。
while (1) { if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; cin.clear(); while (cin.get() != '\n') ; // empty loop to discard invalid input } }
cin.clear() 行清除錯誤標誌,後續的空循環會消耗剩餘的無效字元在輸入線上。這可確保下一次輸入嘗試從頭開始。
透過執行以下步驟,您可以有效地將使用者輸入驗證為 C 中的雙精確度,從而提供強大且使用者友好的輸入驗證機制。
以上是如何在 C 中穩健地驗證使用者輸入為 Double ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!