我正在创建一个简单的控制台应用程序,该应用程序获取的用户输入是整数。

我想要这样一个条件,即它只能是整数,并且不应大于3且不小于0。

我到目前为止提出的代码是:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{

    int uinval;

    while (true) {
        string tempoval;
        cout << "Please enter a value between 0-3:\n>";
        cin >> tempoval;

        stringstream ss(tempoval);
        if (ss >> uinval)
        {
            break;
            cout << "Entered an invalid value";
        }

        while (true)
        {
            if (uinval < 0 || uinval > 3)
                break;
            cout << "Value must be between 0-3";
        }

        cout << "You have entered:" << uinval;

        return 0;
    }

当我输入a,b,c,d之类的非整数值时,此方法有效。但是当我输入-1或4作为值时,它不起作用。

我不确定,也许我把while循环弄糊涂了。

最佳答案

这是不正确的:

while(true){
   if(uinval < 0 || uinval > 3)
     break;
     cout <<"Value must be between 0-3";
}

您反复检查uinval上的条件,而没有给用户输入新值的机会。

要解决此问题,请删除第二个循环,然后更换
if(ss >> uinval) {
    break;
}

在第一个循环内
if(ss >> uinval && uinval >= 0 && uinval < 4) {
    break;
}

关于c++ - 出现错误时返回第一条指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16544596/

10-16 05:03