我在下面有这个,但是如果我输入字母,我会陷入无限循环。

使其仅接受数字0到1,而不接受字母或其他字符的正确方法是什么?它应该接受介于0.1 ect 0.5之间的数字

int alphaval = -1;
cout << "Enter a number between 0 and 1: ";
cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
    cout << "Invalid entry! Please enter a valid value: ";
    cin >> alphaval;
}

最佳答案

请注意,如果您输入意外类型的值(例如,当预期为int时为字符串),那么std::cin将会处于错误状态。如果流处于无效状态,则它将甚至无法读取有效输入,并且循环将无限运行。这似乎是您的情况,因此您需要清除流流,因为该流不是无效输入,因此需要跳过它(使用ignore函数):

double alphaval; //it must be double or float (as per your requirement)

cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
    cout << "Invalid entry! Please enter a valid value: ";

    //FIX
    cin.clear();  //clear bad flags!
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //skip bad input

    cin >> alphaval; //read fresh!
}

包括<limits>std::numeric_limits<>头文件。

关于c++ - 只允许0到1之间的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23260523/

10-11 18:18