C++ 当要求输入整数并用isdigit检查时,将字符转换为int

C++ 当要求输入整数并用isdigit检查时,将字符转换为int,c++,C++,最近,我发现使用isdigit可以检查输入的int值是否是整数,而不是字符串或字符。 然而,当我编写一个简短的程序来处理这个问题时,程序从那时起就无法执行 编辑:我在程序中也希望获取无效数据并将其转换为其他数据类型 代码如下: #include <iostream> #include <sstream> #include <string> #include <cctype> using namespace std; int main() {

最近,我发现使用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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int enterCFN;
重新访问;
国际审查(0);
cout>enterCFN;
bool y=isdigit(输入CFN);
如果(y==false)
{
//这是数据转换部分
重新访问=输入CFN;
重访=回顾;

cout
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');
    }
}
std::cout>enterCFN;
而(1)
{if(标准::cin>>输入CFN)
{
//好的输入
打破
}
其他的
{

std::cout该程序在我的系统上运行良好
isdigit
根据使用
int
作为输入,尽管我认为您使用
cin>>enterCFN
来解决OP的问题是正确的。我实际上澄清了一点问题。它还将无效数据(应该是int)转换为字符或字符串。我实际上澄清了一点这个问题。它还将无效数据(应该是int)转换为char或string。