当用户输入不正确的数据类型时,从单独的文件循环调用函数

时间:2018-04-04 05:11:34

标签: c++ function

我在main.cpp文件中尝试使用的函数有问题。它被称为getFloat并且足够从用户获得一个浮点数,但是当用户输入非浮点值时(例如" Thomas Harding"),即使我有我惯常的保护,程序也会被卡在cin上针对这类问题(cin.ignore(100,' \ n&#39 ;; cin.clear();等)

我认为这个问题与&符号引用的值有关...函数试图将非浮点值返回到另一个文件中的float类型。我的工作看起来像这样:

[来自main.cpp]

#include "getFloat.hpp"
...
...
...
...
...
...
getFloat(load);

[在getFloat.cpp]

void getFloat(float &value)
{
   cin >> value;
   while (cin.fail())
   {
      cin.clear();
      cin >> value;
      cin.ignore(1000, '\n');
   }
}

当我输入非数字值时,有人能看出为什么这会卡在cin语句中吗?

1 个答案:

答案 0 :(得分:1)

在尝试再次读取输入之前调用function solve(a0, a1, a2, b0, b1, b2) { var s = [0, 0]; if (a0 > b0) {s[0] += 1;} if (a1 > b1) {s[0] += 1;} if (a2 > b2) {s[0] += 1;} if (a0 < b0) {s[1] += 1;} if (a1 < b1) {s[1] += 1;} if (a2 < b2) {s[1] += 1;} return s; }。即

cin.ignore()