所以我查看了这个,我看到的大多数解决方案只确保它是一个正在输入的数字,然后如果用户输入一个十进制值,它只会删除小数值,并保留整数。
基本上我想要它
//ask for integer value
//check for valid integer value
//if anything but an integer value throw an error and loop back to start
可能有更好的解决方案,但要 100% 确定用户输入了一个整数值:将整个输入保存到 std::string 中。现在遍历每个字符,确保它是一个数字 (0...9)。通过这种方式,您将检测句点、逗号和所有非数字的内容。
可能是这样的:
#include<limits>
float x;
int num;
while(true){
if (!(cin >> x)) {
cout << "Not a Real Number" << endl;
// do something
}
else {
num = x;
}
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}