将用户输入验证为整数,而不是小数或其他任何内容

时间:2013-09-07 17:18:39

标签: c++ stream controls

所以我看了这个,我看到的大多数解决方案只确保它是一个输入的数字,然后如果用户输入一个小数值,它只是丢弃小数值,并保持整个数。

基本上我想要它

//ask for integer value
//check for valid integer value
//if anything but an integer value throw an error and loop back to start

2 个答案:

答案 0 :(得分:1)

可能有更好的解决方案,但要100%确定用户输入了一个整数值:将整个输入保存到std :: string中。现在通过永远的角色确保它是一个数字(0 ... 9)。通过这种方式,您将检测句点,逗号和所有无数字的内容。

答案 1 :(得分:0)

可能是这样的:

    #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');
  }