以及如何使用STD

现在,考虑无效的用户输入可能会打破这个程序。
首先,我们要求用户输入一些数字。如果他们输入的东西以外的数字(例如“Q”)呢?在这种情况下,提取将失败。
第二,我们要求用户输入四个可能的符号之一。如果他们输入的字符以外的符号之一,我们的期望呢?我们将能够提取输入,但我们目前不处理发生什么事后。
第三,如果我们要求用户输入一个符号,他们输入一个字符串,如“*你好”。尽管我们可以提取我们需要的“*”字符,但是缓冲区中还有额外的输入,这可能会导致道路上的问题。
无效文本输入的类型
我们通常可以将输入的文本错误分成四种类型:
输入提取成功,但输入是没有意义的程序(如进入' K '作为您的数学运算符)。
输入提取成功,但用户进入额外的输入(例如输入'你好你好'作为您的数学运算符)。
输入提取成功,但用户溢出数值。
输入提取失败(例如试图输入Q到数字输入)。
因此,为了使我们的程序健壮,每当我们要求用户输入时,我们最好确定是否上述的每一个可能发生,如果是的话,写代码来处理这些情况。
让我们深入研究每一种情况,以及如何使用STD。
错误案例1:提取成功,但输入是没有意义的
这是最简单的情况。考虑以下程序的执行:
输入双值:5
输入下列内容之一:+,-,*,/或:K
输入双值:7
在这种情况下,我们要求用户输入四个符号中的一个,但他们输入了“k”代替。' K '是一个有效的字符,所以性病::CIN高兴地提取到变量OP,这将返回到主。但我们的程序不希望这种情况发生,所以它不妥善处理这种情况下(因此从来没有输出任何东西)。
这里的解决办法很简单:做输入验证。这通常包括3个步骤:
1)检查用户输入是否是你所期望的。
2)如果是这样,返回值给用户。
3)如果没有,告诉用户出错了,让他们再试一次。

这是一个更新的getoperator()功能,并输入验证。

2
3
4
5
6
7
8
9
10
11
12
13
14
15
char getOperator()
{
    while (true) // Loop until user enters a valid input
    {
        std::cout << "Enter one of the following: +, -, *, or /: ";
        char op;
        std::cin >> op;
 
        // Check whether the user entered meaningful input
        if (op == '+' || op == '-' || op == '*' || op == '/')    
            return op; // return it to the caller
        else // otherwise tell the user what went wrong
            std::cout << "Oops, that input is invalid.  Please try again.\n";
        } // and try again
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值