cin in while循环不能正常工作(C ++)

时间:2013-11-14 13:37:55

标签: c++

该程序应检查输入的数字是否为整数。它适用于字符串,但不适用于双打。

 int test;   
  cout << "Enter the number:" << endl;
  while(true) {
    cin >> test;
    if (!cin || test < 0) {
      cout << "Wrong input, enter the number again:" << endl;
      cin.clear();
      cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }

2 个答案:

答案 0 :(得分:1)

试试这个:

int test;
cout << "Enter the number:" << endl;
while ( true )
{
    cin >> test;
    if (!(test < 0 || !cin))
        break;
}
cout << "Your chosen number is: " << test << endl;

这就是你想要的吗?

答案 1 :(得分:1)

testintistream&gt;&gt; operator只是动态转换为int,然后,你将失去小数部分。

哟可以将test定义为float,并在需要时将其投放到int

编辑:回答你上次编辑(我没有刷新,所以我错过了这部分),发生了什么,没有goto你循环两次:

  1. 您输入1.5
  2. test为1,您不输入if,因此cin未被清除。
  3. 再次循环,cin立即返回。
  4. test为0,因此请输入if statement并抱怨。
  5. 希望这有帮助