我目前设置了一个函数,该函数要求用户输入一个int,获取该int,然后检查以确保输入符合特定规范。在这种情况下,输入应该是一个介于-10和100之间的整数。现在,如果我输入任何字母字符串,例如“gfUIWYDUF”,函数将返回0。为什么会发生这种情况,我该如何解决?
int readUserInput() {
cout << "What is the answer?: " << endl;
int answer;
do {
cin >> answer;
if (!cin || answer < -10 || answer > 100) {
cout << "Invalid Input!" << endl;
cout << "What is the answer?: " << endl;
cin.clear();
cin.ignore();
}
} while(!cin || answer < -10 || answer > 100);
return answer;
}
0作为答案的初始值返回
您可以使用cin。fail()检查输入是否有效。
int readUserInput() {
cout << "What is the answer?: " << endl;
int answer;
do {
cin >> answer;
if (cin.fail() || !cin || answer < -10 || answer > 100) {
cout << "Invalid Input!" << endl;
cout << "What is the answer?: " << endl;
cin.clear();
cin.ignore();
}
} while(cin.fail() || !cin || answer < -10 || answer > 100);
return answer;
}
问题是,这种类型输入的验证循环取决于std::cin
的错误状态。但是,在循环检查错误状态之前,您清除了该错误状态。
解决此问题的最简单方法是将读数从std::cin移动到clear()之后,如下所示:
// Read first
cin >> answer;
do {
if (!cin || answer < -10 || answer > 100) {
cout << "Invalid Input!" << endl;
cout << "What is the answer?: " << endl;
cin.clear();
cin.ignore();
cin >> answer;
}
} while(!cin || answer < -10 || answer > 100);
不过,我认为我更喜欢使用常规的而不是
循环:
cin >> answer;
while(!cin || answer < -10 || answer > 100) {
cout << "Invalid Input!" << endl;
cout << "What is the answer?: " << endl;
cin.clear();
cin.ignore();
cin >> answer;
}
我觉得这更干净,但那只是我。两个循环都会工作。
如果你玩输入值,你会发现cin
例如,放置:
57gh5
返回57
如果只输入数字字符,则得分为0。
如果你说
有人能帮我完成输入验证功能吗。我正在验证整数输入。问题是当用户输入多个整数my cin时。fail()对每个整数运行,导致我的错误显示多次。让我告诉你我的意思 这是我的代码: 因此,如果用户要输入“jjj”;我的“请只输入整数”显示三次。我只想让它显示一次。我不知道怎么做。有什么想法吗?
问题内容: 我有以下html5输入元素: 为什么此输入允许在输入字段中输入字符“ e”?没有其他字母字符可以输入(按预期方式) 使用chrome v.44.0.2403.107 问题答案: 因为这正是规范所说的应该工作的方式。输入的数字可以接受浮点数,包括负号和或字符(其中指数是或后面的数字): 浮点数按以下顺序由以下部分组成: 可选地,第一个字符可以是“ ”字符。 “ ” 范围内的一个或多个字符
问题内容: 我是这个C ++世界的新手,正在尝试为数字密码编写输入验证功能。这是我到目前为止所得到的: 对于不正确的值,它工作得很好,但在有效输入时不会中断循环。知道我在这里缺少什么吗?干杯!! James Kanze脚本的ErroR: 新代码: 使用 和 验证作为字符串 感谢所有人(尤其是James Kanze)的帮助。这件事在这里很有效。 那里还有进一步改进的空间吗?干杯!! 问题答案: 这看
根据经验,您永远不应该信任从最终用户收到的数据, 并且应该在充分利用之前对其进行验证。 要给 model 填充其所需的用户输入数据,你可以调用 yii\base\Model::validate() 方法验证它们。该方法会返回一个布尔值,指明是否通过验证。若没有通过,你能通过 yii\base\Model::$errors 属性获取相应的报错信息。比如, $model = new \app\mode
主要内容:输入验证,应用代码,实例解析AngularJS 表单和控件可以验证输入的数据。 输入验证 在前面的几个章节中,你已经学到关于 AngularJS 表单和控件的知识。 AngularJS 表单和控件可以提供验证功能,并对用户输入的非法数据进行警告。 客户端的验证不能确保用户输入数据的安全,所以服务端的数据验证也是必须的。 应用代码 < !DOCTYPE html > < html > < script src= "http:/