创建一个函数来使cin只允许数字

时间:2015-08-25 16:59:26

标签: c++ visual-c++

#include<iostream>
#include<limits>
using namespace std;
int main()
{

    cout << "Enter an int: ";
    int x = 0;
    while(!(cin >> x))
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input.  Try again: ";
    }
    cout << "You entered: " << x << endl;        
}

我想用这段代码创建一个简单的函数。 所以我做了以下事情。但它显然会运行cin两次如何制作它所以它只使用cin一次?

void nInput(int x)
{

//cout << "Enter an int: ";
int y = 0;
while (!(cin >> y)) 
{
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Invalid input.  Try again: ";
}
cout << "You entered: " << y << endl;
}

int main()
{
    int a;
    cout << "Enter an int:  ";
    cin >> a;
    nInput(a);
}

我尝试更改

 while (!(cin >> y)) 

 while (!(x >> y)) 

但它确实不起作用。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您未在x内使用nInput(),因此在致电cin >> a之前致电nInput()毫无意义,因此请将其删除。如果您不希望cin被调用两次,那么请不要将其调用两次以开始:

int nInput()
{
    cout << "Enter an int:  ";
    int y = 0;
    while (!(cin >> y)) 
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input.  Try again: ";
    }
    cout << "You entered: " << y << endl;
    return y;
}

int main()
{
    int a = nInput();
    // use a as needed...
}