0

我有这个代码片段应该测试用户是否输入整数。如果用户输入字母而不是小数,这将起作用,我想知道为什么会这样。这是我的代码片段:

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但不接受字符?

4

1 回答 1

1

cin>>id只要找到可以转换为(在本例中为“12”)的东西,它就会成功。int当它到达它无法转换的东西时,它会停止,但如果它int已经被读取,那算作成功。

要检查它读取的所有内容是否都是数字,您可能需要执行类似 usingstd::getline将一行输入读入字符串,然后用于std::isdigit测试这些是否都是数字的操作。测试转换为int(本身)只会告诉您它找到了可以读取为整数的东西,但不会告诉您后面是否有其他无法转换为int.

于 2012-11-25T06:05:26.823 回答