创建一个函数使 cin 只允许数字
Creating a Function to make cin only allow numbers
#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))
但这并没有真正起作用。提前致谢。
您没有在 nInput()
内部使用 x
,因此在调用 nInput()
之前调用 cin >> a
没有任何意义,因此只需将其删除即可。如果你不想 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...
}
#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))
但这并没有真正起作用。提前致谢。
您没有在 nInput()
内部使用 x
,因此在调用 nInput()
之前调用 cin >> a
没有任何意义,因此只需将其删除即可。如果你不想 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...
}