如何限制用户在控制台上输入的内容?
例如:当他尝试写1234没问题,当他尝试写一个字符(a)或和而单词却什么也没有发生并且仍然是1234时
所以他只能输入数字
int main (){
int x;
cin>>x; // i want the x to take only numbers
cout<<x;
return 0;
}
答案 0 :(得分:0)
您可以阅读客户输入的每个字符,并对其进行正确处理(也可以根据需要)。例如,如果您只希望整数作为输入,则可以读取它们;如果您的用户向您发送了一个char,则可以向他发送消息,您可以阻止他发送其他输入,或者您可以忽略不输入的内容想要。
int main () {
int x;
cin >> x; // i want the x to take only numbers
if(cin.fail()) {
cout << "Invalid input" << endl;
}
return 0;
}
答案 1 :(得分:0)
您无法控制哪些用户类型。无论如何,您都不应依赖用户输入的输入的有效性。最好的方法是将输入作为字符串提取,验证输入,然后将其转换为整数。
// Check if each character entered in a digit
bool isValidString(string & inp)
{
for (int i = 0; i < inp.size(); i++)
{
// Checks whether inp[i] is a decimal digit character.
if (!isdigit(inp[i]))
{
// This is not a digit.
return false;
}
}
return true;
}
在主要功能中:
int main()
{
string inp;
cin >> inp;
int outputIntValue = 0;
if (isValidString(inp))
{
// Converts the valid digits into integer
outputIntValue = atoi(inp.c_str());
printf("Integer value: %d\n", outputIntValue );
}
else
{
printf("Invalid input: %s\n", inp.c_str());
}
return 0;
}