c++ - 验证用户输入和整数 C++
问题描述
我的 C++ 程序需要要求用户输入两个值。为了避免非整数值,我想创建一个这样的循环:
#include <iostream>
using namespace std;
int main(){
int x,y;
while ((typeof(x)!=int){
cin>>x;
cin>>y;
}
return 0;
}
但是,它不起作用。有谁知道该怎么做?
解决方案
您不能将任何数据类型直接作为表达式求值。
如果输入的数字是整数,则使用std::cin.good()
(返回布尔值)进行验证。
int val1, val2;
std::cout << "Input two integers: ";
std::cin >> val1 >> val2;
while (!std::cin.good()) {
std::cin.clear();
std::cin.ignore(INT_MAX, '\n');
std::cout << "Incorrect! Input two integers: ";
std::cin >> val1 >> val2;
}
std::cout << val1 << ' ' << val2;
样本输出
Input two integers: 33 h
Incorrect! Input two integers: l h
Incorrect! Input two integers: 1 2
1 2
推荐阅读
- javascript - 如何在 React 应用启动时检索 localStorage 数据并使用 useEffect 将其存储在 Redux 中?(它一直在清除我的数据)
- python-3.x - Python selenium chromedriver 验证 luminati 代理?
- python - 使用 python 验证 apache 状态的脚本
- c# - 查看查询字符串是否传递给'string SqlCommand.CommandText'
- databricks - Azure-databricks 显示功能未显示绘图选项
- git - Jenkins 从 Jenkinsfile 签出之前签出的代码之上的 Repo
- git - 如何与 rebase 合并?
- flutter - 使用 google_maps_flutter 包在 Flutter 中绘制路线
- angular - 如何在 Karma 中对 forkJoin 进行单元测试
- angular-components - AngularDart - 如何在 MaterialAutoSuggestInputComponent 中保持浮动标签与字形左侧对齐?