【发布时间】:2018-08-01 10:57:26
【问题描述】:
我正在编写一段代码,用于检查用户输入的内容是否实际上是有效输入之一(在本例中为 1-9),如果不是,则会给出错误消息。
这就是我所拥有的:
if (input != '1', '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '0' )
{
cout << "Error";
}
但它似乎不起作用。我以为我可以用逗号来分隔它们,但也许我在想象。
是唯一的选择:
input != '1' && input != '2' && input != '3' etc etc
我知道这种方法可行,但似乎有点啰嗦。有没有更简单的方法?
【问题讨论】:
-
使用
>/>=和</<=。在 C 支持的任何编码中,数字都保证按'0'到'9'的顺序排列。(例如if (input < '0' || input > '9')) -
这个问题很可能会被否决,并且对于家庭作业副本没有答案。但是你总是可以使用 switch 以防 "if" 有太多选项,并将默认情况作为错误,如 switch(input){ case 1: ... default: Error;休息; }
-
在这种特殊情况下,另一个选项是
isdigit()。 -
@DevSolar 这没关系,字符文字根据执行字符集进行翻译。如果 this 与执行机器上实际使用的字符集不匹配,你的问题会更严重——当然,
isdigit()也不起作用。