当要求输入整数并使用isdigit检查时,将char转换为int

Converting char to int when asked to enter an integer and checked with isdigit

本文关键字:char 转换 int 检查 isdigit 输入 整数      更新时间:2023-10-16

最近,我发现使用isdigit来检查输入的int值是否实际上是整数,而不是字符串或字符。然而,当我写了一个简短的程序来处理这个问题时,这个程序从那时起就无法执行

编辑:我在程序中也想获取无效数据并将其转换为不同的数据类型。

这是代码:

#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
    int enterCFN;
    char revisit;
    int review(0);
    cout << "Enter a digit: ";
    cin >> enterCFN;
    bool y = isdigit(enterCFN);
    if (y == false)
    {
        // This is the data conversion section
         revisit = enterCFN;
         revisit = review;
         cout << review << "n";
    }
    else
    {
        cout << enterCFN << "n";
    }
    return 0;
}

有人能纠正我的错误并告诉我我做错了什么吗?

enterCFN是一个int。它存储一个数字。isdigit()检查字符是否表示数字。这不是一回事:例如32是一个数字,但char(32)表示' '(空格)。

你想要的是:

if (cin >> enterCFN)

这将接受用户的输入,并同时检查它是否有效。无需isdigit()

isdigit()检查给定字符是否为0-9 之一

要验证整数,请执行以下操作:

std::cout << "Enter a digit: ";
std::cin >> enterCFN ;
while (1)
{   if ( std::cin >> enterCFN )
    {
        // good input
        break ;
    }
    else
    {
         std::cout << "Enter a digit: ";
         // clear stream flags set due to bad input
         std::cin.clear();
        // get rid of the bad input.
       // ignore the rest of the line
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
    }
}