我试图以一种用户总是必须输入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循环中,而不是递归调用该函数