如何限制用户在控制台中写的内容

时间:2019-04-30 00:35:05

标签: c++ limit

如何限制用户在控制台上输入的内容?

例如:当他尝试写1234没问题,当他尝试写一个字符(a)或和而单词却什么也没有发生并且仍然是1234时

所以他只能输入数字

int main (){
int x;
cin>>x; // i want the x to take only numbers
cout<<x;
return 0;
}

2 个答案:

答案 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;
}