簡體   English   中英

cin.fail 帶有額外條件 C++

[英]cin.fail with extra conditions C++

所以我需要從用戶那里得到輸入,它必須是一個數字,我必須使用cin.fail()來檢查它是否是一個數字。 最重要的是,數字必須是 0、1 或 2。我是 C++ 新手,所以還沒有想出如何去做。

這是代碼的一部分。 它檢查輸入是否為數字,但我不知道如何讓它檢查數字是 1、2 還是 0,如果不是,則再次詢問,直到輸入有效。

do {
  input = false;
  cout << "Enter a number from the menu: ";
  cin >> menu;

  if (cin.fail()) {
    cout << "Invalid input!" << endl;
    input = true;
    cin.clear();
  }
  cin.ignore(numeric_limits<streamsize>::max(), '\n');

} while (input);

cout << "Valid input!";

假設變量menu是一個字符串,你可以在if語句中取字符串menu的第一個字符,檢查該字符的十進制值是否在'0''3'的十進制數之間。

將您的 if 語句更改為:

if (menu[0] < '0' || menu[0] > '3' || menu.length() > 1)
{
    // Error code
}

僅當第一個字符的十進制值小於字符'0'的十進制值或大於字符'3'的十進制值時,此代碼才會運行,如果用戶輸入的長度超過此代碼,則此代碼將運行輸入大於 1。

假設menu是一個整數,女巫是有道理的,您可以將您提到的條件添加到您的if

if (cin.fail() || menu < 0 || menu > 2)

現場樣品

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM