我有这个代码片段,用于测试用户是否输入整数。如果用户输入字母而不是小数字,这就有用,我想知道为什么会这样。这是我的代码片段:
Student student;
int id;
while(!(cin >> id))
{
cout << "\nERROR: Please enter a Positive Whole Number" << endl;
cin.clear();
cin.ignore ();
cout << "Enter Student ID: ";
}
输入A
将使其遍历while循环,但如果我输入12.5
,它将退出while循环并继续运行。是不是测试它是否会解析为整数?为什么它接受12.5
但不接受字符?
答案 0 :(得分:1)
cin>>id
只要找到某事就可以成功,它可以转换为int
(在本例中为“12”)。当它到达无法转换的东西时,它会停止,但如果已经读取了int
,那就算是成功了。
要检查它读取的所有是否为数字,您可能需要执行诸如使用std::getline
将一行输入读入字符串,然后使用std::isdigit
来执行此操作测试这些是否都是数字。测试转换为int
(单独)只会告诉您它找到了一些可以作为整数读取的内容,但是不会告诉您是否其他内容无法转换为int
。