我不会检查年龄是否是数字在这个例子中它会接受1E作为数字而它不接受E1,我不会只接受数字
没有任何符号或字母
int main()
{
int age= 0;
std::cin >> age;
if (std::cin.fail())
{
std::cout << "I failed, try again ..." << std::endl;
std::cin.clear(); // reset the failed state
}
答案 0 :(得分:0)
真正的cin和提取运算符不适合解析用户输入。它们可以输入自动格式化的记录,但不能输入可能存在自由格式错误的输入。
如果你使用基于行的输入,然后调用函数strtol(),你可以找到数字。 strtol()还处理负号和数字,它们太大而不能容纳整数。它本质上是安全的整数解析器。此外,如果出错,您可以轻松丢弃整行并要求用户重新输入,这通常是所需的行为。