首页 > 解决方案 > 验证用户输入和整数 C++

问题描述

我的 C++ 程序需要要求用户输入两个值。为了避免非整数值,我想创建一个这样的循环:

#include <iostream>
using namespace std;

int main(){
     int x,y;

     while ((typeof(x)!=int){
         cin>>x;
         cin>>y;
     }
     return 0;
}

但是,它不起作用。有谁知道该怎么做?

标签: c++inputverification

解决方案


您不能将任何数据类型直接作为表达式求值。

如果输入的数字是整数,则使用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

推荐阅读