我试图以一种用户总是必须输入kg或lb的方式来验证输入,如果不这样做,它将要求用户重新输入。它可以一直工作到这一点,但是不会读取新的输入。我知道我需要清除缓冲区,但是iss.clear()无法正常工作。

float readMass()
{
    string weight;
    getline(cin, weight);

    float weightValue;
    string massUnit;
    istringstream iss(weight);
    streampos pos = iss.tellg();

    iss >> weightValue >> massUnit;

    if (massUnit == "lb")
    {
        weightValue = weightValue / 2.20462;
    }
    else if (massUnit == "kg")
    {
        weightValue = weightValue;
    }
    else
    {
        cout << "Please enter a correct weight and mass indicator: \n";
        iss.clear();
        readMass();
    }

    return weightValue;
}

最佳答案

iss.str("");

我也建议将其放在while循环中,而不是递归调用该函数

09-28 02:17