#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))
但它确实不起作用。提前谢谢。
答案 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...
}