cin >> red_rgb;
輸入時如何檢查red_rgb,green_rgb,blue_rgb變數,以便只允許0到255范圍內的值,而只計算整數{0,1,2...254,255},否則,您將需要輸入正確的值。
int red_rgb = 0;
int green_rgb = 0;
int blue_rgb = 0;
std::cout << "Enter R: ";
while (!(cin >> red_rgb) || !(red_rgb >= 0 && red_rgb <= 255))
{
cout << "Error";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
std::cout << "Enter G: ";
while (!(cin >> green_rgb) || !(green_rgb >= 0 && green_rgb <= 255))
{
cout << "Error";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
std::cout << "Enter B: ";
while (!(cin >> blue_rgb) || !(blue_rgb >= 0 && blue_rgb <= 255))
{
cout << "Error";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
此方法測驗范圍,但跳過分號。如果您輸入字母而不是數字,則字母越多,回圈開始的次數就越多。
如果輸入浮點數,則跳過輸入下一個值的回圈 在 此處輸入影像描述
uj5u.com熱心網友回復:
嘗試這樣的事情:
int inprgb(const string& hint){
int a=-1;
while (true){
cout << hint;
cin>>a;
if (cin.fail() || cin.peek()!=10 ||!(a >= 0 && a <= 255) ) {
cin.clear();
cout << "Error\n";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
continue;
}
break;
}
return a;
};
和
red_rgb = inprgb("Enter R: ");
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513857.html
標籤:C while循环辛
